Kafka-提交偏移量(offset)

1.自动提交:
  1.属性enable.auto.commit -> true
  2.属性auto.commit.interval.ms ->5000 默认提交时间间隔为5s
  3.消费者会自动将poll()方法接收到的消息的最大偏移量提交上去
2.手动提交偏移量(分为两种)
  1.同步的提交
  2.异步的提交
  3.属性enable.auto.commit -> false
3.同步方式提交偏移量
  1.使用commitSync()提交偏移量
  2.会返回由poll()方法返回的消息的最大偏移量。
  3.在处理玩逻辑后要确保执行commitSync()。
  4.若发生消费者再均衡,
    从上次提交的偏移量后的部分数据会被重复处理。
  5.例子:

在这里插入图片描述

4.异步方式提交偏移量
  1.同步方式提交缺点:在broker对提交请求做出回应之前,应用程序会一直阻塞,
    会限制Kafka的吞吐量。
  2.这时用异步提交commitAsync();
  3.无需等待broker响应完,应用继续跑。
  4.commitAsync()支持回调函数,用来记录提交错误等
  5.无回调和有回调的例子:

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

5.同步和异步组合提交:
  1,例子:

在这里插入图片描述

6.提交特定的偏移量:
  1.commitSync()和commitAsync()都支持提交一个Map,
    Map<分区,偏移量>
  2.不过可能读取很多分区,会使代码变复杂。
  3.例子:

在这里插入图片描述

7.再均衡监听器:
  1.消费者在退出或进行分区再均衡之前,会做一些工作
  2.比如会在消费者失去对一个分区的所有权前提交最后一个已处理消息的偏移量。
  3.就不会有丢失或重复消息。
  4.具体API和例子:

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

8.exactly once 提交偏移量:
  1.原理:将消息和偏移量通过食物存进数据库中,
        再用seek()方法查找保存在数据库中的偏移量
  2.这样就可以保证消息有且只有一次被处理。
  3.例子:

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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值