【发布时间】:2017-05-16 09:04:57
【问题描述】:
我已将自动提交间隔设置为 5 秒。如果 poll() 方法需要 10 秒才能完成处理会怎样。
它仍然会每 5 秒提交一次还是等到下一次 poll()?
谢谢
【问题讨论】:
标签: apache-kafka kafka-consumer-api
我已将自动提交间隔设置为 5 秒。如果 poll() 方法需要 10 秒才能完成处理会怎样。
它仍然会每 5 秒提交一次还是等到下一次 poll()?
谢谢
【问题讨论】:
标签: apache-kafka kafka-consumer-api
即使您将auto.commit.interval.ms 设置为 5 秒,也不能保证每 5 秒提交一次。从技术上讲,我同意你waits until the next poll 的说法。
将首先在单个poll 轮中检查处理偏移提交。事实上,轮询 coordinator 事件是KafkaConsumer#poll 所做的最开始的事情,包括确保 coordinator 的活跃性、消费者成功加入 group 以及处理 auto-commit-offset 的事情。在此检查期间,协调器决定是否应提交偏移量。它是在调用poll 的同一线程中执行的,因此无法达到精确的 5 秒间隔,直到下一个轮询协调器不处理这些事情。
【讨论】: