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

标签 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

但我只是对 是否感到困惑键1 代表分区号 .

使用控制台消费者我查看了消息,
kafka-console-consumer.bat --zookeeper localhost:2181 --topic sample

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

最佳答案

key 不是分区号,而是 Kafka 使用 key 来指定目标分区。默认策略是根据 key 的 hash 选择分区,如果 key 为 null,则使用循环算法。

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

更新:也可以直接在ProducerRecord中指定分区号

关于apache-kafka - 如何将消息发送到 Kafka 中的特定分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324249/

相关文章:

java - 使用 Apache Kafka 进行实时消息传递

autoconf - 如何将 autoconf/automake 指向非标准包

kubernetes - Kafka Producer jmx 指标缺失

scala - 如何评估使用 InterfaceStability 注释的代码(失败并显示 "illegal cyclic reference involving class InterfaceStability")?

apache-kafka - 多个主题的一个 kafka 消费者与每个主题/分区的一个消费者

apache-kafka - 如何查看kafka消息

python - Kafka Producer配置重试策略

java - KafkaSpout 没有收到来自 Kafka 的任何信息

hadoop - 使用hbase中已有的zookeeper

java - KafkaProducer 总是选择 localhost :8081 for schema registry in Java API