Semua contoh dari Kafka | produser menunjukkan ProducerRecord
pasangan kunci / nilai tidak hanya memiliki tipe yang sama (semua contoh menunjukkan <String,String>
), tetapi memiliki nilai yang sama . Sebagai contoh:
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
Namun di dokumen Kafka, saya tidak bisa menemukan di mana konsep kunci / nilai (dan tujuan / utilitas yang mendasarinya) dijelaskan. Dalam perpesanan tradisional (ActiveMQ, RabbitMQ, dll.) Saya selalu mengirim pesan ke topik / antrian / pertukaran tertentu. Tetapi Kafka adalah pialang pertama yang tampaknya membutuhkan pasangan kunci / nilai alih-alih hanya pesan string biasa.
Jadi saya bertanya: Apa tujuan / kegunaan mewajibkan produsen mengirimkan pasangan KV?
KStream
danKTable
- lihat di sini .partition
parameter , parameter itu akan digunakan, dan kuncinya akan "diabaikan" (atau tentu saja, kunci akan tetap ditulis ke dalam topik). - Ini memungkinkan Anda untuk memiliki partisi yang disesuaikan meskipun Anda memiliki kunci.Tambahan yang terlambat ... Menentukan kunci sehingga semua pesan pada kunci yang sama pergi ke partisi yang sama sangat penting untuk pengurutan pemrosesan pesan yang tepat jika Anda akan memiliki banyak konsumen dalam satu grup konsumen pada suatu topik.
Tanpa kunci, dua pesan pada kunci yang sama dapat masuk ke partisi yang berbeda dan diproses oleh konsumen yang berbeda dalam grup yang rusak.
sumber
Kasus penggunaan menarik lainnya
Kita dapat menggunakan atribut key dalam topik Kafka untuk mengirim user_id dan kemudian dapat menghubungkan konsumen untuk mengambil acara streaming (peristiwa yang disimpan dalam atribut nilai). Ini dapat memungkinkan Anda memproses riwayat maksimal urutan peristiwa pengguna untuk membuat fitur dalam model pembelajaran mesin Anda.
Saya masih harus mencari tahu apakah ini mungkin atau tidak. Akan terus memperbarui jawaban saya dengan detail lebih lanjut.
sumber