请问关于consumer的auto-offset-reset earliest 和 latest 到底含义是什么?
去查阅了下官网资料
What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server (e.g. because that data has been deleted):
earliest: automatically reset the offset to the earliest offset
latest: automatically reset the offset to the latest offset
(机翻。。。)
当Kafka中没有初始偏移量或服务器上不再存在当前偏移量时(例如因为该数据已被删除),该怎么办:
此时打开消费者查看消费详情
发现并没有从头开始消费 而是从当前的offset之后开始消费了5个数据
此时打开消费者查看消费详情
结论 :当存在offset时 设置为earliest或latest 都是从当前的offset之后开始消费
创建一个新的消费组 并订阅当前topic
结果发现并不会消费新的数据 因为创建的5个数据 在新的消费服务启动前就已经创建了 而当前的消费者没有提交过offset 且模式设置为latest 直接设置当前的offset为 3056 (分区0最后一个是3055)和 8529(分区2最后一个是8528)
此时查看当前的集群状态
多了一个c1_4 新增的消费组 并且已经更新到最新的offset
打开消费者服务查看 消费详情
发现之前的数据也消费了 id 14996 14998 14999 15000 等
此时查看kafka集群状态
当Kafka中没有初始偏移量或服务器上不再存在当前偏移量时(例如因为该数据已被删除)时设置auto-offset-reset属性:
earliest :会从最早的开始拉取
latest : 会从当前最新的开始拉取 即当前offset 之后的第一个开始拉取
当存在已经提交的offset时 两者都是从最后一次提交记录的 offset开始拉取数据。
记录一下仅供大家参考 ,欢迎大佬指正错误,第一次写不太会排版见谅。。。
入坑kafka几天的萌新,现在才搭建完项目跑起来,发现我这个写的用消费者的springboot默认自带的key分区模式 结果数据分区不平衡 0 1 2 分区 2分区爆满 1分区基本没咋用。。。 想写个自定义的分区策略结果不了解整个加载流程 还在爬坑中。希望大佬多多指教。