例 of Kafka | プロデューサーProducerRecord
のキー/値のペアを、同じタイプ(すべての例が<String,String>
を示す)であるだけでなく、同じvalue。例えば:
producer.send(new ProducerRecord<String, String>("someTopic", Integer.toString(i), Integer.toString(i)));
しかし、Kafkaドキュメントでは、キー/値の概念(およびその基本的な目的/ユーティリティ)が説明されている場所を見つけることができないようです。従来のメッセージング(ActiveMQ、RabbitMQなど)では、特定のトピック/キュー/交換で常にメッセージを送信していました。しかし、Kafkaは、通常の 'ole文字列メッセージではなく、キー/値のペアを必要とする最初のブローカーです。
だから私は尋ねる:プロデューサーにKVペアを送信することを要求する目的/有用性は何ですか?
Kafkaは、パーティションで構成される分散logの抽象化を使用します。ログをパーティションに分割すると、システムをスケールアウトできます。
Keysは、メッセージが追加されるログ内のパーティションを決定するために使用されます。値はメッセージの実際のペイロードです。この点に関して、例は実際にはあまり「良い」ものではありません。通常、値として複合型(タプル型やJSONなど)があり、1つのフィールドをキーとして抽出します。
参照: http://kafka.Apache.org/intro#intro_topics および http://kafka.Apache.org/intro#intro_producers
一般に、キーや値はnull
にもできます。キーがnull
の場合、ランダムパーティションが選択されます。値がnull
の場合、itcanは、ログ保持ポリシーの代わりにlog-compactionを有効にする場合に特別な「削除」セマンティクスを持つことができますトピック( http://kafka.Apache.org/documentation#compaction )。