我有一个向 kafka 主题发送消息的生产者。我的主题在同一消费者组中有 10 个分区,我正在寻找消息的循环分配。我在生产者配置中指定了 RoundRobinPartitioner ,甚至尝试将 batch.size 设置为 0 ,假设不会批处理任何消息并且会进行循环。然而,我总是看到只有 5 个分区一直收到消息。我在向主题发送消息时没有指定任何键。知道我缺少什么来获得所需的行为吗?只要这些批次分布到所有分区,我就可以启用批处理。如有任何帮助,我们将不胜感激。
生产者配置如下。
循环分区
启用幂等性,true
批量大小,0
未添加显式密钥
我已经生成了几千条消息,但无法真正观察分布情况。我可以用几千条消息实现循环......吗?
在早期的 Kafka 客户端版本中,存在一个错误,导致获得新默认分区器的 UniformStickyPartitioner 分布不均匀。它没有按预期工作,但在 3.3.0 版本中已修复。有关更多信息,请参阅以下错误报告:https://issues.apache.org/jira/browse/KAFKA-10888
尝试使用kafka客户端版本3.3.0或更高版本。
此外,您不应将分区程序设置为旧的 RoundRobinPartitioner,因为手动设置它会产生您所描述的问题。