使用Spring Boot Kafka -v 2.2.1.RELEASE (使用kafka-clients.jar v 2.3.1)
我正在为我的Kafka代理使用confluent v5.1.2。
我已经启用了自动提交为true,并且每隔3秒自动提交一次。
我有一个基于spring的监听器类(@KafkaListener),每个消息处理大约需要6-7秒,因为它是一个资源密集型操作。
我在这里注意到的是,监听器从未提交过偏移量,并且延迟永久地保持为"550“。
正因为如此(我认为),消息被监听器无限期地处理。
当我将侦听器更改为手动提交偏移量时,它工作得很好。
为什么在涉及长时间运行的事务的情况下,自动提交不起作用?
是否有任何设置丢失或设置为太小/太大的数字?我想知道对于这种长时间运行的事务,推荐的策略是什么。
谢谢!
发布于 2020-01-23 21:27:03
自动提交在消费者线程上运行,因此auto.commit.interval.ms
应该被认为是最小的-实际的提交直到下一次轮询才会发生。
然而,Spring建议不要使用自动提交,而是让容器执行提交(例如,使用AckMode.RECORD
);它更具确定性和可靠性。
https://stackoverflow.com/questions/59872369
复制相似问题