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()
.
来完成
在 Kafka 中,每个消费者组由唯一的 group.id 属性 表示。每个消费者组管理自己的偏移量(存储在 __consumer_offsets 主题中)。如果我总是使用动态生成的 group.id 值启动我的消费者服务,这个偏移会发生什么?
这个新的消费者组因为没有偏移量,会一直从主题的开头读取,还是会'auto.offset.reset'生效?
如果您每次启动应用程序时都生成一个新的 group.id
,消费者将依赖 auto.offset.reset
来找到其起始位置。这是因为不会存储任何偏移量,因为这是一个新组。
使用 auto.offset.reset
,您可以指示消费者从日志的 earliest
开始或从日志的 latest
结束。
请注意,在启动时,您还可以控制应用程序逻辑中的位置,并根据需要明确地寻找任意位置。
一个相对常见的模式是从按时间导出的位置开始,例如寻找到 1 小时前或一天的开始。这可以使用 offsetsForTimes()
and seek()
.