Producer
继续发送消息...我在停止offset
之前检查了consumer
值,它是8023. 10分钟后我开始consumer
然后是第一个偏移值是8020.经过一段时间后,我停止了consumer
那时我开始{1}}一小时后偏移值为9239,然后第一个消息偏移值为9299我将consumer
设置为{{ 1}}我也记录了auto.offset.reset
值,它只是latest
。如果我在8092之后停止partition
,当我在30分钟后重新启动它时,它必须从8093获取
答案 0 :(得分:2)
如果消费者没有为其正在使用的群组提交抵消,则消费者只会考虑auto.offset.reset
。否则,它将从上次提交的偏移量重新开始。
默认情况下,消费者每5秒自动提交一次偏移,因此根据消息速率,最后提交的偏移总是一些记录是最近收到的偏移量。
为了缩小这一差距,您有以下几种选择:
禁用auto.commit.offset
,并使用手动提交,以便控制何时提交抵消。
缩短auto.commit.interval.ms
间隔,以便更频繁地提交抵消。
请注意,提交更频繁会带来轻微的性能成本。
关于auto.offset.reset
的最后一件事:
设置为latest
时,它会指示使用者从日志末尾重新启动。例如,如果您在偏移量5000处停止消费者。如果在重新启动消费者之前,您已经生成消息,直到抵消6000,消费者将重新开始消费6000消费,并且将完全跳过5000到6000的消息。 / p>