java kafka设置偏移量_kafka消费者偏移量提交

自动提交当前偏移量

如果客户端属性enable.auto.commit被设为true,那么每过5s,消费者会自动把从poll()方法接收到的最大偏移量提交上去,提交时间间隔

由auto.commit.interval.ms控制,默认为5s

假设我们使用默认的5s提交时间间隔,在上次提交的3s之后发生了再均衡,在均衡后消费者会从最后一次提交的位置开始读取消息,这时候

偏移量已经落后的3s,因此这3s内的消息会被重复处理,可以修改时间间隔来进行优化,但是这种情况无法避免.

注意: 消息重复的问题可以通过保证消息处理逻辑的幂等性来处理

同步提交当前偏移量

把auto.commit.offset设为false,方应用程序决定何时提交偏移量,使用commitSync()方法提交偏移量最简单可靠,这个api会提交

poll()方法返回的最新偏移量,提交成功后马上返回,如果提交失败,则跑出异常

注意: commitSync()方法提交的偏移量是最新的偏移量,需要在处理完所有消息之后再调用

代码示例

@Test

void test() {

Properties properties = new Properties()

properties.put(KafkaConstants.BOOTSTRAP_SERVERS_KEY, KafkaConstants.BOOTSTRAP_SERVERS)

properties.put(KafkaConstants.KEY_DESERIALIZER_KEY, KafkaConstants.STRING_DESERIALIZER)

properties.put(KafkaConstants.VALUE_DESERIALIZER_KEY, KafkaConstants.STRING_DESERIALIZER)

properties.put(KafkaC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值