在 Kafka 中,每个消费者组都由唯一的 group.id 属性表示。每个消费者组管理自己的偏移量(存储在 __consumer_offsets 主题中)。如果我总是使用动态生成的 group.id 值启动我的消费者服务,这个偏移量会发生什么?
这个新的消费者组是否总是从主题的开头读取,因为它没有偏移量,或者“auto.offset.reset”会生效吗?
最佳答案
如果每次应用程序启动时生成新的group.id
,消费者将依赖auto.offset.reset
来找到其起始位置。这是因为不会存储任何偏移量,因为这是一个新组。
通过 auto.offset.reset
,您可以指示消费者从日志的最早
开头开始或以最新
结束.
请注意,在启动时,您还可以控制应用程序逻辑中的位置,并根据您想要的任何位置显式寻找任意位置。
一种相对常见的模式是从按时间得出的位置开始,例如查找 1 小时前或一天的开始。这可以使用 offsetsForTimes()
来完成和 seek()
.
关于apache-kafka - 卡夫卡 : how does consumer offsets work with dynamically created group ids?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70425298/