配置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条数据,因为 g004 还没有提交过关于 test4 的 偏移量offset 所以 latest 会让消费者组读取新产生的数据

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

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


四、结论

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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值