irpas技术客

配置Kafka的参数auto.offset.reset时earliest和latest的区别_名字都让我吃了_earliest和latest

大大的周 2975

一、earliest

创建一个topic名称为?test1?,设定这个topic初始有三个分区

生成一个消费者组 g001 ,订阅?test1?,参数使用?earliest

如果 g001?消费者组 在 test1的其中一个分区下没有提交 偏移量offset 时,在消费该分区数据的时候会?从头?全部读取

如果 g001?消费者组 在 test1?的其中一个分区下有提交 偏移量offset 时,在消费该分区数据的时候会从 偏移量offset处开始读取

二、latest

创建一个topic名称为?test2?,设定这个topic初始有三个分区

生成一个消费者组?g002?,订阅?test2?,参数使用?latest

如果 g002?消费者组 在 test2 的其中一个分区下没有提交 偏移量offset 时,在消费该分区数据的时不会?从头?全部读取,而是读取?新产生的数据

如果 g002?消费者组 在 test2 的其中一个分区下有提交 偏移量offset 时,在消费该分区数据的时候会从 偏移量offset 处开始读取

三、测试

如果想要测试,可以设置参数?enable.auto.commit?为 fales?(当设置为fales时当前消费者组将不再自动提交偏移量offset,默认是true)


创建一个topic名称为?test3?,设定这个topic初始有三个分区,假设有初始数据10条

生成一个新的消费者组?g003?,订阅?test3?,参数使用?earliest 设置参数?enable.auto.commit?为 fales

消费者组?g003?不管重新启动多少次,依旧消费这10条数据,因为?g003?还没有提交过关于?test3?的?偏移量offset

当消费者组 g003 提交了一次关于 test3 的 偏移量offset 之后(在这我们假设提交之后 偏移量offset 为11) , 有一个生产者向 test3 新提交了5条数据

这时,不管重启多少次 g003 ,也只会消费这新的5条数据


创建一个topic名称为?test4?,设定这个topic初始有三个分区,假设有初始数据10条

生成一个新的消费者组?g004?,订阅?test4?,参数使用?latest?设置参数?enable.auto.commit?为 fales

消费者组?g004?不管重新启动多少次,都不会消费到这10条数据,因为?g003?还没有提交过关于?test3?的?偏移量offset?所以?latest 会让消费者组读取新产生的数据

当消费者组 g004 提交了一次关于 test4 的 偏移量offset 之后(在这我们假设提交之后 偏移量offset 为11) , 有一个生产者向 test4 新提交了5条数据

这时,不管重启多少次 g004 ,也都会一直消费这新的5条数据


四、结论

earliest 和 latest 在有 偏移量offset 时,效果是一样的,都会从 偏移量offset 处继续消费;当没有 偏移量offset 时, ealiest 从头消费,?latest 消费新产生的数据


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #earliest和latest #earliest # #latest #在有 #偏移量offset # #效果是一样的