如何将消息发送到Kafka中的特定分区?

时间:2018-05-14 06:31:12

标签: apache-kafka apache-zookeeper kafka-producer-api

我创建了一个包含许多分区的主题。使用控制台生产者我想将消息发送到特定分区并通过控制台消费者查看。 在控制台生产者我试过这个,

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

我想根据分区查看消息。这是在控制台消费者上查看消息的正确方法吗?任何人都可以对此有清楚的了解吗?

1 个答案:

答案 0 :(得分:4)

密钥不是分区号,但Kafka使用密钥指定目标分区。默认策略是根据密钥的散列选择分区,或者如果密钥为空则使用循环算法。

如果您需要自定义算法将消息映射到分区,则需要实现org.apache.kafka.clients.producer.Partitioner接口。必须将您的类的名称设置为生产者的partitioner.class属性。

更新:您还可以直接在ProducerRecord

中指定分区号