gst*_*low 11 java autocommit offset apache-kafka kafka-consumer-api
我正在读这个:
自动提交提交偏移的最简单方法是允许消费者为您执行此操作.如果配置enable.auto.commit = true,则消费者每五秒钟将提交客户端从poll()收到的最大偏移量.五秒间隔是默认值,可通过设置auto.commit.interval.ms来控制.就像消费者中的其他所有内容一样,自动提交由poll循环驱动.无论何时轮询,消费者都会检查是否需要提交,如果是,它将提交它在上次轮询中返回的偏移量.
也许问题是我的英语不好但我不完全理解这个描述.
假设我使用默认间隔的自动提交 - 5秒,并且每7秒轮询一次.在这种情况下,提交将每5秒或每7秒发生一次?
如果民意调查每3秒发生一次,你能澄清一下行为吗?是每5秒还是每6秒发生一次?
我读过这个:
自动提交:您可以将auto.commit设置为true,并将auto.commit.interval.ms属性设置为以毫秒为单位的值.启用此功能后,Kafka使用者将提交响应其poll()调用而收到的最后一条消息的偏移量.poll()调用在set auto.commit.interval.ms的后台发出.
这与答案相矛盾.
你能详细解释这些东西吗?
让我说我有这样的图:
0秒 - 轮询
4秒 - 轮询
8秒 - 轮询
什么时候会提交偏移以及何时提交?
小智 7
轮询完成后,它将尝试尽快自动提交。您可以查看使用者协调器的源代码,该类在类级别定义了一组本地字段,以了解是否启用了自动提交,什么时间间隔以及下一次执行自动提交的截止日期。
据说,例如poll每7秒执行一次,并将autocommit设置为5:
0-投票,+将最后期限设置为第5秒
7-投票+由于截止日期而提交,将截止日期更新为7 + 5 = 12
14-投票+由于截止日期而提交,将截止日期更新为12 + 5 = 17
但是,如果轮询设置为每3秒一次,并且自动提交设置为5:
0-投票,+将最后期限设置为第5秒
3-民意调查,无承诺
6-投票+由于截止日期而提交,将截止日期更新为6 + 5 = 11
| 归档时间: |
|
| 查看次数: |
8127 次 |
| 最近记录: |