栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

配置Kafka的参数auto.offset.reset时earliest和latest的区别

配置Kafka的参数auto.offset.reset时earliest和latest的区别

一、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 消费新产生的数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734054.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号