我正在读 这个:
自动提交提交偏移量的最简单方法是让消费者为您做这件事。如果您配置 enable.auto.commit=true,那么每五秒消费者将提交您的客户端从 poll() 收到的最大偏移量。五秒间隔是默认值,由设置 auto.commit.interval.ms 控制。就像消费者中的其他一切一样,自动提交由轮询循环驱动。每当您进行轮询时,消费者都会检查是否到了提交时间,如果是,它将提交它在上次轮询中返回的偏移量。
也许问题是我的英语不好,但我没有完全理解这个描述。
假设我使用默认间隔自动提交 - 5 秒,轮询每 7 秒发生一次。在这种情况下,提交将每 5 秒或每 7 秒发生一次?
如果轮询每 3 秒发生一次,您能否澄清行为?提交是每 5 秒还是每 6 秒发生一次?
我读过 这个:
自动提交:您可以将 auto.commit 设置为 true 并使用以毫秒为单位的值设置 auto.commit.interval.ms 属性。启用此功能后,Kafka 消费者将提交收到的最后一条消息的偏移量以响应其 poll() 调用。 poll() 调用在后台以设置的 auto.commit.interval.ms 发出。
它与答案相矛盾。
你能详细解释一下这个东西吗?
假设我有这样的图表:
0 秒 - 轮询
4 秒 - 轮询
8 秒 - 轮询
offset 什么时候提交,什么时候提交?
原文由 gstackoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议
每次轮询都会调用自动提交检查,它会检查经过的时间是否大于配置的时间。如果是,则提交偏移量。
如果提交间隔为 5 秒并且轮询在 7 秒内发生,则提交将仅在 7 秒后发生。