Kafka Consumer没有获取最后提交的值

时间:2018-01-22 04:55:36

标签: apache-kafka kafka-consumer-api

Producer继续发送消息...我在停止offset之前检查了consumer值,它是8023. 10分钟后我开始consumer然后是第一个偏移值是8020.经过一段时间后,我停止了consumer那时我开始{1}}一小时后偏移值为9239,然后第一个消息偏移值为9299我将consumer设置为{{ 1}}我也记录了auto.offset.reset值,它只是latest。如果我在8092之后停止partition,当我在30分钟后重新启动它时,它必须从8093获取

1 个答案:

答案 0 :(得分:2)

如果消费者没有为其正在使用的群组提交抵消,则消费者只会考虑auto.offset.reset。否则,它将从上次提交的偏移量重新开始。

默认情况下,消费者每5秒自动提交一次偏移,因此根据消息速率,最后提交的偏移总是一些记录是最近收到的偏移量。

为了缩小这一差距,您有以下几种选择:

  • 禁用auto.commit.offset,并使用手动提交,以便控制何时提交抵消。

  • 缩短auto.commit.interval.ms间隔,以便更频繁地提交抵消。

请注意,提交更频繁会带来轻微的性能成本。

关于auto.offset.reset的最后一件事:

设置为latest时,它会指示使用者从日志末尾重新启动。例如,如果您在偏移量5000处停止消费者。如果在重新启动消费者之前,您已经生成消息,直到抵消6000,消费者将重新开始消费6000消费,并且将完全跳过5000到6000的消息。 / p>