web-dev-qa-db-ja.com

Kafkaの特定のパーティションにメッセージを送信する方法は?

多くのパーティションがあるトピックを作成しました。コンソールプロデューサーを使用して、特定のパーティションにメッセージを送信し、コンソールコンシューマーを通じてメッセージを表示します。コンソールプロデューサーでこれを試しましたが、

kafka-console-producer.bat --broker-list localhost:9092 --topic sample  --property parse.key=true --property key.separator=,

メッセージを送信

key1,another-message

しかし、私はkey1パーティション番号を表すかどうか混乱しています。

コンソールのコンシューマーを使用して、メッセージを表示しました。

kafka-console-consumer.bat --zookeeper localhost:2181 --topic sample

パーティション別にメッセージを表示したい。これは、コンソールの消費者にメッセージを表示する正しい方法ですか?誰もがこれを明確に理解してくれますか?

8
Amr916

キーはパーティション番号ではありませんが、Kafkaはキーを使用してターゲットパーティションを指定します。デフォルトの戦略は、キーのハッシュに基づいてパーティションを選択するか、キーがnullです。

メッセージをパーティションにマップするカスタムアルゴリズムが必要な場合は、org.Apache.kafka.clients.producer.Partitionerインターフェースを実装する必要があります。クラスの名前は、プロデューサーのpartitioner.classプロパティとして設定する必要があります。

更新:ProducerRecord で直接パーティション番号を指定することもできます

8
Katya Gorshkova