如果我的服务使用 Kafka 消息,kafka 会不会以某种方式丢失我的偏移量?

If my service consumes Kafka messages, can kafka somehow lose my offsets?

如果我有一个作为消息消费者连接到 kafka 的服务,并且我读取的每条消息都会向该消息偏移量发送一个提交,这样如果我的服务关闭并重新启动,它将从上次读取的消息开始读取向前。我的理解是提交的偏移量将由kafka维护。

现在我的问题是,我是否需要担心偏移量? kafka 是否会以某种方式丢失该信息,并且当服务重新启动时,根据我的初始偏移量配置,从主题的开头或结尾开始读取消息?或者,如果 kafka 丢失了我的偏移量,它也会丢失主题中的所有消息,以便从头开始阅读可以吗?

注意:我在服务上使用 spring-kafka,但不确定这是否与问题相关。

在大多数情况下,如果您有活跃的消费者(使用手册或 auto-committing),则无需担心。

您确实需要考虑 auto.offset.reset 设置行为的情况是当您的消费者组处于非活动状态时代理上的 offsets.retention.minutes 时间已经过去。发生这种情况时,Kafka 会压缩 __consumer_offsets 主题并删除为那些非活动组存储的任何偏移量

丢失偏移量不会影响源主题。您的客户端主题有自己独立的保留设置,其消息也可以删除(或不删除),具体取决于您的配置方式。