私はcamel-kafkaバージョン2.19.2を使用しています。この質問を投稿する前にCamelsのウェブサイト - camel-kafkaのドキュメントを調べました。差分パーティションキーとApache Camelのキー
メッセージを生成するための次の例があることがわかりました。
Producing messages:
from("direct:start").process(new Processor() {
@Override
public void process(Exchange exchange) throws Exception {
exchange.getIn().setBody("Test Message from Camel Kafka Component Final",String.class);
exchange.getIn().setHeader(KafkaConstants.PARTITION_KEY, 0);
exchange.getIn().setHeader(KafkaConstants.KEY, "1");
}
}).to("kafka:localhost:9092?topic=test");
あなたが見ることができるように、またKafkaConstants.PARTITION_KEY
とKafkaConstants.KEY
が存在するが、詳細については、私は4つのパーティションでカフカトピックを持っています。
私はその両方で遊んだので、KafkaConstants.KEY
はメッセージキーとして機能し、このキーはメッセージがどのパーティションに送られるかを判断するために使用されることを理解しました。
KafkaConstants.PARTITION_KEY
私は混乱しているパーティション番号を設定しようとしましたが、それでもメッセージは4つのパーティションすべてに送信されました。
この2つのKafkaConstantsの違いを誰でも指定できますか?そして具体的にはKafkaConstants.PARTITION_KEY
は何用ですか?
EDIT:使用しているラクダのバージョンを修正しました。
KEY:2.21.0-SNAPSHOTドキュメントのgithubのドキュメントから
github docへのリンクありがとう - 明らかに私はキーを提供しなければならず、次にpartition_keyだけが動くことができます。 KafkaConstants.PARTITION_KEY - "カフカ。PARTITION_KEY " - 整数 - パーティションを明示的に指定します(KafkaConstants.KEYヘッダーが定義されている場合のみ使用されます) したがって、回答を更新することができます。 –