一、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 #时 #效果是一样的