我读到Kafka偏移的默认实验时间是7天。我的理解对下面的场景正确吗?1.生产者产生消息1和21.使用auto-offset-reset=latest的消费者使用提交的消息1和2六天内什么都没发生1.消费者崩溃1.生产者产生消息3两天什么都没发生1.消费者正在启动,但没有读取消息3,因为最后提交的偏移量被删除,并且触发了auto-offset-reset=latest?
xoefb8l81#
抵消到期时间其他升级说明
根据新的语义,当组订阅了相应的主题并且仍然处于活动状态(有活动的消费者)时,组中分区的偏移量不会被删除。如果组为空,则在默认偏移量保留期(或broker设置的偏移量保留期)过后(除非组再次处于活动状态),其所有偏移量将被删除。当该组中7天内没有活动消费者时,将删除消费者组偏移量(默认保留)。当消费者崩溃时,这意味着该组中没有活动的消费者,如果消费者崩溃7天,则偏移将被删除。一旦偏移量数据被删除/找不到,那么如果有消费者订阅,则会接受提供的配置。如果auto-offset-reset=latest,则只会消费消费者初始化后发布的数据。
auto-offset-reset=latest
auto.offset.reset文档
当Kafka中没有初始偏移量,或者服务器上的当前偏移量不再存在(例如,因为该数据已被删除)时,该怎么办:
ibps3vxo2#
提交的偏移量在代理上的配置与主题保留不同。查看retention.ms主题配置和offsets.retention.minutes之间的Kafka设置
retention.ms
offsets.retention.minutes
但是-您需要了解的是,只删除关闭的片段,片段的默认大小为1GB。也就是说,如果您只发送了3个事件,平均大小小于333.33 MB(而Kafka记录的单个记录默认最大限制为1 MB),那么您仍然会将所有3个事件保留在打开的片段中,无论时间如何...
333.33 MB
在任何情况下,是的,如果消费者组偏移量被删除(就好像该组从未存在过),那么auto.offset.reset就会发生。none是这个设置的有效选项,如果你想在发生这种情况时抛出一个异常,而不是寻找主题的结尾,并可能跳过你以前可能读过的数据。此外,如果主题数据未保留,并且出现“偏移超出范围”异常,则也会使用该属性。
auto.offset.reset
none
2条答案
按热度按时间xoefb8l81#
抵消到期时间其他升级说明
根据新的语义,当组订阅了相应的主题并且仍然处于活动状态(有活动的消费者)时,组中分区的偏移量不会被删除。如果组为空,则在默认偏移量保留期(或broker设置的偏移量保留期)过后(除非组再次处于活动状态),其所有偏移量将被删除。
当该组中7天内没有活动消费者时,将删除消费者组偏移量(默认保留)。
当消费者崩溃时,这意味着该组中没有活动的消费者,如果消费者崩溃7天,则偏移将被删除。
一旦偏移量数据被删除/找不到,那么如果有消费者订阅,则会接受提供的配置。如果
auto-offset-reset=latest
,则只会消费消费者初始化后发布的数据。auto.offset.reset文档
当Kafka中没有初始偏移量,或者服务器上的当前偏移量不再存在(例如,因为该数据已被删除)时,该怎么办:
ibps3vxo2#
提交的偏移量在代理上的配置与主题保留不同。
查看
retention.ms
主题配置和offsets.retention.minutes
之间的Kafka设置但是-您需要了解的是,只删除关闭的片段,片段的默认大小为1GB。也就是说,如果您只发送了3个事件,平均大小小于
333.33 MB
(而Kafka记录的单个记录默认最大限制为1 MB),那么您仍然会将所有3个事件保留在打开的片段中,无论时间如何...在任何情况下,是的,如果消费者组偏移量被删除(就好像该组从未存在过),那么
auto.offset.reset
就会发生。none
是这个设置的有效选项,如果你想在发生这种情况时抛出一个异常,而不是寻找主题的结尾,并可能跳过你以前可能读过的数据。此外,如果主题数据未保留,并且出现“偏移超出范围”异常,则也会使用该属性。