了解Kafka自动偏移重置

jhkqcmku  于 2023-04-05  发布在  Apache
关注(0)|答案(2)|浏览(198)

我读到Kafka偏移的默认实验时间是7天。我的理解对下面的场景正确吗?
1.生产者产生消息1和2
1.使用auto-offset-reset=latest的消费者使用提交的消息1和2
六天内什么都没发生
1.消费者崩溃
1.生产者产生消息3
两天什么都没发生
1.消费者正在启动,但没有读取消息3,因为最后提交的偏移量被删除,并且触发了auto-offset-reset=latest

xoefb8l8

xoefb8l81#

抵消到期时间其他升级说明

根据新的语义,当组订阅了相应的主题并且仍然处于活动状态(有活动的消费者)时,组中分区的偏移量不会被删除。如果组为空,则在默认偏移量保留期(或broker设置的偏移量保留期)过后(除非组再次处于活动状态),其所有偏移量将被删除。
当该组中7天内没有活动消费者时,将删除消费者组偏移量(默认保留)。
当消费者崩溃时,这意味着该组中没有活动的消费者,如果消费者崩溃7天,则偏移将被删除。
一旦偏移量数据被删除/找不到,那么如果有消费者订阅,则会接受提供的配置。如果auto-offset-reset=latest,则只会消费消费者初始化后发布的数据。

auto.offset.reset文档

当Kafka中没有初始偏移量,或者服务器上的当前偏移量不再存在(例如,因为该数据已被删除)时,该怎么办:

ibps3vxo

ibps3vxo2#

提交的偏移量在代理上的配置与主题保留不同。
查看retention.ms主题配置和offsets.retention.minutes之间的Kafka设置

但是-您需要了解的是,只删除关闭的片段,片段的默认大小为1GB。也就是说,如果您只发送了3个事件,平均大小小于333.33 MB(而Kafka记录的单个记录默认最大限制为1 MB),那么您仍然会将所有3个事件保留在打开的片段中,无论时间如何...

在任何情况下,是的,如果消费者组偏移量被删除(就好像该组从未存在过),那么auto.offset.reset就会发生。none是这个设置的有效选项,如果你想在发生这种情况时抛出一个异常,而不是寻找主题的结尾,并可能跳过你以前可能读过的数据。
此外,如果主题数据未保留,并且出现“偏移超出范围”异常,则也会使用该属性。

相关问题