消费时offset被重置导致重复消费

1.业务背景:

kafka 使用的事2.11_0.10.0.1

在做及时通讯IM的时候,客户端A发完消息后会,使用kafka 通知下游服务(kafka 消费者consumer)进行给B端用户发送消息。

2.现象:

1.在某一时间

在某一时间是kafka consumer poll处理时间9.3 s ,poll这里逻辑用了线程池,只有最后提交offests的时候会有个synchronized,但是一般都是0.1ms的。

public void execute() {try {while (true) {ConsumerRecords<byte[], byte[]> records = consumer.poll(200);StopWatch stopWatch = PerfUtlils.getWatcher();PerfCount.countMetric(MicrometerStat.STAT_KAFKA_CONSUMER, "kafka.consumer.poll.record.count");//1.先找出吧不同的topic 分区for (final TopicPartition partition : records.partitions()) {List<ConsumerRecord<byte[], byte[]>> partitionRecords = records.records(partition);//2.对于同一个分区的不同record用独立线程处理partitionRecords.forEach(record -> {ConsumerWorker<T> worker = new ConsumerWorker<>(record, handler, offsets, partition);worker.setFutureTask(executors.submit(worker));log.info("consumer worker consume  1 message");});}//3.提交offsetscommitAsyncOffsets();PerfCount.durationTimeMetric(MicrometerStat.STAT_KAFKA_CONSUMER, "kafka.consumer.poll.process", stopWatch);}} catch (WakeupException e) {log.info("kafka poll get WakeupException");} finally {commitSyncOffsets();consumer.close();}}

2.这时候业务error 日志是

org.apache.kafka.clients.consumer.RetriableCommitFailedException: Offset commit failed with a retriable exception. You should retry committing the latest consumed offsets.
 

3.kafka broker 日志:

3.原因:

博主设置的消费者 session.timeout.ms=8000 8s

其中session.timeout.ms 的含义有两个(kafka 0.10.1.0之前):

  1. 是consumer group 检测组内成员发送奔溃的时间,回个某个group 成员突然崩溃(比如kill -9 或者宕机),group coordinator 有可能需要session.timeout.ms 时间感应到。
  2. 是consumer 消费处理逻辑的最大时间,倘或consumer 两次poll的时间间隔超过该参数所设的阈值,那么group coordinator 入会认为此consumer跟不上组内其他成员的消费进度并将其”踢出”组中,会进行rebalane

上面文字来自《Apache kafka 实战》

很明显博主的情况属于第二种,这个被”踢出”组中会无法提交位移,之就会造成这些消息会被其他程序消费,但此时刚好这个consumer会再次提交这个offests所有会出现上面的bug。

4.解决办法:

1.将session.timeout.ms 设置大些。

2.

Offset commit failed with a retriable exception. You should retry committing the latest consumed off相关推荐

  1. 【Flink】Flink kafka报错 Auto-commit of offsets failed for group Offset commit failed with a retriable

    1.背景 commit failed with a retriable exception. You should retry committing offsets. [2020-09-05 15:0 ...

  2. kafka自动提交offset失败:Auto offset commit failed

    今天在服务日志中观察数据的消费情况时,发现了一个如下的警告,而且每隔几秒就会出现一次,虽然只是个警告, Auto offset commit failed for group order_group: ...

  3. 【kafka】kafka Offset commit failed on partition The coordinator is not aware of this member

    文章目录 1.背景 1.2 参考 2. 场景2 本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 1.背景 Offset commit failed on ...

  4. Kafka 异常 : DefaultOffsetCommitCallback.onComplete(ConsumerCoordinator.java:537) -Offset commit faile

    Kafka 异常 : DefaultOffsetCommitCallback.onComplete(ConsumerCoordinator.java:537) -Offset commit faile ...

  5. Commit failed with error: pathspec 'src/main/java/com/leo/demo/juctest/test.java' did not match any

    Git 提交报错:Commit failed with error: pathspec 'src/main/java/com/leo/demo/juctest/test.java' did not m ...

  6. 如何解决SVN Commit failed (details follow): Access denied

    遇到问题:因工作需求,今天去项目组备份svn虚拟机.当A同事看到我,说:"你是来备份svn的吧,那我抓紧还有点数据准备提及."想等他提交完了,我再开始备份. 问题来了:A同事拿U盘 ...

  7. 程序开过多线程,导致hadoop作业无法运行成功——Call to hadoop1:9000 failed on lo cal exception: java.io.IOException: Coul

    hadoop集群中某一个节点有时候起不来,查看log日志,有如下错误: 2015-03-09 10:40:30,253 ERROR org.apache.hadoop.hdfs.server.data ...

  8. svn提示svn: E170001: Commit failed (details follow):解决

    设置好防火墙和阿里云服务器控制台防火墙之后还会出现 svn: E170001: Commit failed (details follow): svn: E170001: Authorization ...

  9. 解决svn: E160028: Commit failed (details follow): svn is out of date问题

    1 问题 解决svn: E160028: Commit failed (details follow): svn is out of date问题 2 分析 项目太久未同步了 3 解决问题 更新项目再 ...

  10. Svn commit failed aborting commit

    一.背景 在使用svn管理项目时,删除了文件夹"项目图纸"里面的内容,然后在这个里面新增了一些文件,出现标题中的问题Svn commit failed aborting commi ...

最新文章

  1. 学习一个 Linux 命令:sort 命令
  2. 人工智能的价值地图:AI产业增强革命的模式与路径
  3. 4.3.6 无分类编址CIDR
  4. **PHP foreach 如何判断为数组最后一个最高效?
  5. 使用pipeline的函数
  6. 命令 检查Linux服务器性能
  7. sqlite 二进制字段 (zz)
  8. 浅谈如何防范电池事故
  9. Roguelike+RPG如何给玩家刺激的游戏体验? 《我功夫特牛》系统逆推
  10. Oracle电子商务套件版本12.1.3自述文件 (Doc ID 1534411.1)
  11. PHP系列(九)PHP文件系统处理
  12. mysql undrop_MySQL · 数据恢复 · undrop-for-innodb
  13. VMware 披露严重0day,影响Workspace One 的多个组件
  14. 大学计算机一级准考证打印,河海大学计算机等级考试准考证打印入口
  15. 蓝桥杯历届真题题目+解析+代码+答案(2013-2020)(JavaA、B、C组)(C++语言)(Python)
  16. SpringBoot Controller Post接口单元测试
  17. 新手学游戏开发必知的一课
  18. ROS三轮全向轮移动底盘 (01)
  19. Thunder9(迅雷9)去掉右侧浏览器广告的方法
  20. 《Total Commander:万能文件管理器》——12.6. 附录

热门文章

  1. PCB设计技巧一百问
  2. API-天气预报接口详情
  3. java流重定向如何分类,Java 文件流与标准流之间的重定向
  4. Bug软件缺陷管理制度
  5. java https pfx_使用HttpClient携带pfx证书调用HTTPS协议的WebService
  6. puppeteer-recorder
  7. HackTheBox::Sunday
  8. 山寨手机的操作系统(mtk)简介
  9. 适应智能工厂的新一代MES所需具备的核心要素
  10. 个人邮箱怎么注册,商业人士用哪个邮箱最好?