【发布时间】:2016-10-08 03:10:22
【问题描述】:
我正在尝试将具有不同密钥的消息存储到不同的分区。
例如:
ProducerRecord<String, String> rec1 = new ProducerRecord<String, String>("topic", "key1", line);
ProducerRecord<String, String> rec2 = new ProducerRecord<String, String>("topic", "key2", line);
producer.send(rec1);
producer.send(rec2);
但是当我尝试运行我的 Producer 类时,它总是存储在单个分区中。
根据文档,DefaultPartitioner 使用 message key hash code 来查找分区。
我也看到了这个问题Kafka partition key not working properly,但是我在 0.9.x 版本的 Kafka 客户端库中找不到ByteArrayPartitioner 类。
props.put("partitioner.class", "kafka.producer.ByteArrayPartitioner")
更新:我正在使用代码动态创建主题。
如果我手动创建一个带有分区的主题,那么它工作正常。
【问题讨论】:
标签: apache-kafka partitioning kafka-producer-api