Kafka Producer 将消息平均分发到所有分区

问题描述 投票:0回答:1

我有一个向 kafka 主题发送消息的生产者。我的主题在同一消费者组中有 10 个分区,我正在寻找消息的循环分配。我在生产者配置中指定了 RoundRobinPartitioner ,甚至尝试将 batch.size 设置为 0 ,假设不会批处理任何消息并且会进行循环。然而,我总是看到只有 5 个分区一直收到消息。我在向主题发送消息时没有指定任何键。知道我缺少什么来获得所需的行为吗?只要这些批次分布到所有分区,我就可以启用批处理。如有任何帮助,我们将不胜感激。

生产者配置如下。

循环分区

启用幂等性,true

批量大小,0

未添加显式密钥

我已经生成了几千条消息,但无法真正观察分布情况。我可以用几千条消息实现循环......吗?

apache-kafka spring-kafka kafka-producer-api
1个回答
0
投票

在早期的 Kafka 客户端版本中,存在一个错误,导致获得新默认分区器的 UniformStickyPartitioner 分布不均匀。它没有按预期工作,但在 3.3.0 版本中已修复。有关更多信息,请参阅以下错误报告:https://issues.apache.org/jira/browse/KAFKA-10888

尝试使用kafka客户端版本3.3.0或更高版本。

此外,您不应将分区程序设置为旧的 RoundRobinPartitioner,因为手动设置它会产生您所描述的问题。

© www.soinside.com 2019 - 2024. All rights reserved.