使用spring-boot kafka-v2.2.1.release(使用kafka-clients.jarv2.3.1)
我正在使用融合V5.1.2作为我的Kafka经纪人。
我已经启用自动提交为真,自动提交间隔每3秒。
我有一个基于spring的listener类(@kafkalistener),每个消息处理大约需要6-7秒,因为这是一个资源密集型操作。
我在这里注意到的是,侦听器从未提交偏移量,并且延迟永久保持为“550”。
因此(我认为),侦听器会无限期地处理消息。
当我将侦听器更改为手动提交偏移量时,它可以正常工作。
为什么autocommit在涉及长时间运行事务的情况下不起作用?
是否有任何设置丢失或设置为太小/太大的数字?我想知道对于这种长时间运行的事务,推荐的策略是什么。
谢谢!
1条答案
按热度按时间7uhlpewt1#
自动提交在使用者线程上运行,因此
auto.commit.interval.ms
应该被视为一个最低限度-实际提交将不会发生,直到下一次投票。但是,spring建议不要使用autocommit并让容器执行提交(例如
AckMode.RECORD
); 它更具有确定性和可靠性。