Kafka consumer的offset的提交方式

本文详细介绍了Kafka消费者offset的提交机制,包括手动提交的同步和异步方式,以及自动提交的实现原理。同步提交在ConsumerCoordinator.commitOffsetSync中进行,异步提交则在commitOffsetsAsync中,而自动提交在consumer.poll()中处理,根据设定的自动提交间隔自动执行。源码分析揭示了offset提交的内部工作流程。
摘要由CSDN通过智能技术生成

Kafka consumer的offset提交机制有以下两种

手动提交

同步提交
consumer.commitSync()方式提交

异步提交

consumer.commitAsync(callback)方式提交

###自动提交

props.put("enable.auto.commit", "true");
props.put("auto.commit.interval.ms", "1000");

通过上面启动自动提交以及设置自动提交间隔时间(默认为5s)

源码分析

同步提交源码分析

同步提交的核心代码在ConsumerCoordinator.commitOffsetSync中,核心代码如下:

public boolean commitOffsetsSync(Map<TopicPartition, OffsetAndMetadata> offsets, long timeoutMs) {
   

  invokeCompletedOffsetCommitCallbacks();
do {
   
  
  // 1. 组装OffsetCommitRequest
  RequestFuture<Void> future = sendOffsetCommitRequest(offsets);
  // 2. 发送请求
  client.poll(future, remainingMs);
  // 3. 接受到响应之后通知拦截器
  if (future.succeeded()) {
   
      if (interceptors != null)
          interceptors.onCommit(offsets);
      return true;
  }
  if (future.failed() && !futu
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值