kafka auto.offset.reset值不起作用

8 篇文章 0 订阅
6 篇文章 0 订阅

一、auto.offset.reset值含义解释

<earliest>
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费
<latest>
当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据
<none>
topic各分区都存在已提交的offset时,从offset后开始消费;只要有一个分区不存在已提交的offset,则抛出异常

二、实际应用不起作用

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

问题原因

那就是对于同一个groupid的消费者,
如果这个topic某个分区有已经提交的offset,那么无论是把auto.offset.reset=earliest还是latest,都将失效,
消费者会从已经提交的offset开始消费.

那我没究竟如何才能消费最早的数据?肯定是可以的,看下面测试验证!!!

测试验证1(网上说,关闭自动提交)——失败

把kafka的enable.offset.commit设置为false,让kafka的自动提交功能关闭,这时候对于某个topic就没有已经提交的offset了
在这里插入图片描述

测试验证2(满足两个条件)——成功

欢迎加入扣扣老程序员圈:783092701

  1. 使用一个全新的"group.id"(就是之前没有被任何消费者使用过);
  2. 指定"auto.offset.reset"参数的值为earliest;
    在这里插入图片描述

注意

测试验证2,换了新的group.id是可以从最早数据消费;但是重启服务后,又只能从最新的开始消费!

三、kafka能否创建很多消费者组

  • 需求:需要每次从最早消费,那就需要每次创建新的消费者组
  • 疑惑点我们能否手动删除旧的消费者组?
    无需与新使用者一起删除。以下是尝试删除时脚本输出的内容:
    请注意,无需删除新使用者的组元数据,因为当最后一个成员离开时,它会自动删除
    这是简短的答案。更多细节:通过“元数据”,有两个意思。首先,只需存储作为组成员身份协调器一部分的有关消费者和消费者组的信息。如果组中的所有消费者都不在,则会自动删除。
    其次,使用者组已将提交的偏移量存储在kafka主题中(使用新使用者时)。以前这些都是用zookeeper存储的)。当消费者群体消失时,该主题不会立即删除。如果使用者组再次出现,它将在本主题中自动找到以前的偏移量。它可以选择使用它们或忽略它们。如果使用者组不再出现,这些存储的偏移量最终会被自动垃圾收集。
    因此,简而言之,在使用新消费者时不需要删除任何内容。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠菜很好吃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值