需要澄清有关 Kafka 自动提交和 auto.commit.interval.ms
Need clarification about Kafka auto commit and auto.commit.interval.ms
文档https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html说"Note that with auto-commit enabled, a call to poll will always commit the last offset returned by the previous poll. It doesn’t know which events were actually processed, so it is critical to always process all the events returned by poll before calling poll again (or before calling close(), it will also automatically commit offsets)"。如果是这种情况,如果 auto.commit.interval.ms 大于处理从前一个 poll()
.
收到的消息所花费的时间,它是如何工作的
为了使其更具体,请考虑以下情况:
enable.auto.commit=true
auto.commit.interval.ms=10
然后我循环调用 poll()
。
1) 第一次调用 poll()
时,我收到 1000 条消息(偏移量 2000-3000),处理所有 1000 条消息需要 1 毫秒
2) 我又打给了poll()
。在第二次 poll()
调用中,它应该提交从前一个 poll()
返回的最新偏移量 3000,但是由于 auto.commit.interval.ms
设置为 10 毫秒,它不会提交偏移量,对吗?
在这种情况下,提交的偏移量将越来越落后于实际处理的最新偏移量?
有人可以clarify/confirm吗?
您描述的行为正确。但是,你的结论是不正确的。承诺的偏移量不会越来越滞后。自动提交间隔过后,下一次调用 poll 将提交 所有 条处理过的消息。
假设您每 10 毫秒调用一次轮询,并将提交间隔设置为 100 毫秒。因此,在每 10 次轮询调用中都会提交(并且此提交涵盖来自最后 10 次轮询调用的所有消息)。
文档https://www.safaribooksonline.com/library/view/kafka-the-definitive/9781491936153/ch04.html说"Note that with auto-commit enabled, a call to poll will always commit the last offset returned by the previous poll. It doesn’t know which events were actually processed, so it is critical to always process all the events returned by poll before calling poll again (or before calling close(), it will also automatically commit offsets)"。如果是这种情况,如果 auto.commit.interval.ms 大于处理从前一个 poll()
.
为了使其更具体,请考虑以下情况:
enable.auto.commit=true
auto.commit.interval.ms=10
然后我循环调用 poll()
。
1) 第一次调用 poll()
时,我收到 1000 条消息(偏移量 2000-3000),处理所有 1000 条消息需要 1 毫秒
2) 我又打给了poll()
。在第二次 poll()
调用中,它应该提交从前一个 poll()
返回的最新偏移量 3000,但是由于 auto.commit.interval.ms
设置为 10 毫秒,它不会提交偏移量,对吗?
在这种情况下,提交的偏移量将越来越落后于实际处理的最新偏移量?
有人可以clarify/confirm吗?
您描述的行为正确。但是,你的结论是不正确的。承诺的偏移量不会越来越滞后。自动提交间隔过后,下一次调用 poll 将提交 所有 条处理过的消息。
假设您每 10 毫秒调用一次轮询,并将提交间隔设置为 100 毫秒。因此,在每 10 次轮询调用中都会提交(并且此提交涵盖来自最后 10 次轮询调用的所有消息)。