Kafka:消费者偏移量如何与动态创建的组 ID 一起使用?

Kafka: how does consumer offsets work with dynamically created group ids?

在 Kafka 中,每个消费者组由唯一的 group.id 属性 表示。每个消费者组管理自己的偏移量(存储在 __consumer_offsets 主题中)。如果我总是使用动态生成的 group.id 值启动我的消费者服务,这个偏移会发生什么?

这个新的消费者组因为没有偏移量,会一直从主题的开头读取,还是会'auto.offset.reset'生效?

如果您每次启动应用程序时都生成一个新的 group.id,消费者将依赖 auto.offset.reset 来找到其起始位置。这是因为不会存储任何偏移量,因为这是一个新组。

使用 auto.offset.reset,您可以指示消费者从日志的 earliest 开始或从日志的 latest 结束。

请注意,在启动时,您还可以控制应用程序逻辑中的位置,并根据需要明确地寻找任意位置。

一个相对常见的模式是从按时间导出的位置开始,例如寻找到 1 小时前或一天的开始。这可以使用 offsetsForTimes() and seek().

来完成