我正在运行带有Spring-data(版本1.5.1.RELEASE)和Spring-kafka(版本1.1.1RELEASE)的Kafka(版本0.10.2)。
我有一个消费群体正在调查的话题。我注意到有时候,当一个消费者重新开始时,话题的滞后立即变成了更大的数字。经过研究后,我得出结论,Kafka重新启动了偏移量,但我不明白为什么。
initState()
滞后通常很低(低于500),并且会在几毫秒内消耗掉,因此它不能超出范围索引(或者可以吗?)
也许有人有主意吗?
答案 0 :(得分:0)
我认为实际上并没有像您期望的那样频繁地提交偏移量,因此,当使用者重新启动时,组会重新平衡,然后以最近自动提交的偏移量进行补偿。
提交仅定期发生(每个配置5秒),而不是每条消息进行一次。因此,应该期望最多看到5秒钟的重复数据,而不是主题的开始,除非根本没有提交偏移量(您应该在客户端中设置简单的log4j登录才能确定此结果)< / p>
如果需要更好的控制,请禁用自动偏移量提交和Consumer对象的call the commitSync or commitAsync methods(这些是核心Java API的方法,不确定Spring)。
一种选择可能是升级您的Spring客户,就像Gary在下面说的那样。由于您正在运行Kafka 0.10.2+,因此这不是问题。