多くのパーティションがあるトピックを作成しました。コンソールプロデューサーを使用して、特定のパーティションにメッセージを送信し、コンソールコンシューマーを通じてメッセージを表示します。コンソールプロデューサーでこれを試しましたが、
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
パーティション別にメッセージを表示したい。これは、コンソールの消費者にメッセージを表示する正しい方法ですか?誰もがこれを明確に理解してくれますか?
キーはパーティション番号ではありませんが、Kafkaはキーを使用してターゲットパーティションを指定します。デフォルトの戦略は、キーのハッシュに基づいてパーティションを選択するか、キーがnullです。
メッセージをパーティションにマップするカスタムアルゴリズムが必要な場合は、org.Apache.kafka.clients.producer.Partitioner
インターフェースを実装する必要があります。クラスの名前は、プロデューサーのpartitioner.class
プロパティとして設定する必要があります。
更新:ProducerRecord で直接パーティション番号を指定することもできます