为什么会出现重复消费

1、kafka是通过offset来标记消费的。默认情况下,消费完成后会自动提交offset,避免重复消费。

Kafka消费端的自动提交逻辑有一个默认的5秒间隔,也就是说在5秒之后的下一次向Broker拉取消息的时候提交。

所以在Consumer消费的过程中,应用程序被强制kill掉或者宕机,可能会导致Offset没提交,从而产生重复提交的问题。

2、Kafka里面有一个Partition Balance机制,就是把多个Partition均衡的分配给多个消费者。

Consumer端会从分配的Partition里面去消费消息,如果Consumer在默认的5分钟内没办法处理完这一批消息。

就会触发Kafka的Rebalance机制,从而导致Offset自动提交失败。

而在重新Rebalance之后,Consumer还是会从之前没提交的Offset位置开始消费,也会导致消息重复消费的问题。

如何避免

1、提高消费端的处理性能避免触发Balance,比如可以用异步的方式来处理消息,缩短单个消息消费的市场。或者还可以调整消息处理的超时时间。还可以减少一次性从Broker上拉取数据的条数。

2、可以针对消息生成md5然后保存到mysql或者redis里面,在处理消息之前先去mysql或者redis里面判断是否已经消费过。这个方案其实就是利用幂等性的思想。

kafka 如何避免重复消费相关推荐

  1. Kafka 心跳机制 重复消费

    kafka 心跳机制 Kafka是通过心跳机制来控制消费超时,心跳机制对于消费者客户端来说是无感的,它是一个异步线程,当我们启动一个消费者实例时,心跳线程就开始工作了.心跳超时会导致消息重复消费. 在 ...

  2. 什么?搞不定Kafka重复消费?

    来自:架构之美 前言 今天我们聊一个话题,这个话题大家可能在面试过程中,或者是工作当中经常遇到 ????如何保证 Kafka 消息不重复消费?我们在做开发的时候为了程序的健壮性,在使用 Kafka 的 ...

  3. 三张表有重复字段_什么?搞不定Kafka重复消费?

    点戳蓝字"架构之美"关注我们哦! 前言 今天我们聊一个话题,这个话题大家可能在面试过程中,或者是工作当中经常遇到 ?如何保证 Kafka 消息不重复消费?我们在做开发的时候为了程序 ...

  4. kafka 重复消费和数据丢失_刨根问底,Kafka消息中间件到底会不会丢消息

    大型互联网公司一般都会要求消息传递最大限度的不丢失,比如用户服务给代金券服务发送一个消息,如果消息丢失会造成用户未收到应得的代金券,最终用户会投诉. 为避免上面类似情况的发生,除了做好补偿措施,更应该 ...

  5. 【消息队列】kafka是如何保证消息不被重复消费的

    一.kafka自带的消费机制 kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offs ...

  6. kafka rebalance与数据重复消费问题

    问题和现象: 某个程序在消费kafka数据时,总是重复消费相关数据,仿佛在数据消费完毕之后,没有提交相应的偏移量.然而在程序中设置了自动提交:enable.auto.commit为true 检查日志, ...

  7. kafka一直rebalance故障,重复消费

    今天我司线上kafka消息代理出现错误日志,异常rebalance,而且平均间隔2到3分钟就会rebalance一次,分析日志发现比较严重.错误日志如下 08-09 11:01:11 131 pool ...

  8. kafka重复消费问题

    开篇提示:kafka重复消费的根本原因就是"数据消费了,但是offset没更新"!而我们要探究一般什么情况下会导致offset没更新? 今天查看Elasticsearch索引的时候 ...

  9. MQ问题集(kafka主从同步与高可用,MQ重复消费、幂等)

    1.kafka主从同步与高可用 https://1028826685.iteye.com/blog/2354570 http://developer.51cto.com/art/201808/5815 ...

最新文章

  1. selenium 无法定位打开a链接_测试干货 :Selenium8种元素定位法
  2. Python_序列对象内置方法详解_String
  3. android double比较大小吗,Android双向选择控件DoubleSeekBar使用详解
  4. append在python里是什么意思_“一棵绿萝七个鬼”是什么意思?卧室里到底能不能养绿萝!...
  5. windows linux mysql_linux/windows环境mysql数据库安装与使用
  6. 我的Java设计模式-单例模式
  7. QTreeWidget样式qss
  8. 关于android RTP驱动的问题
  9. 摄影测量(一):概述
  10. 详解win7升级win10原来的软件还能用吗
  11. UnityVR-初识Unity-实践-制作一个工程场景
  12. AtCoder Beginner Contest 162 D.RGB Triplets
  13. Swift是花拳绣腿吗?——谈谈开发语言与程序员的职业发展
  14. 哔哩哔哩自动播放视频
  15. 区块链技术应用于链接智慧医疗
  16. 第三阶段:Web前端:02数据库(sql语言、JDBC数据库连接) | 03(1)SpringBoot
  17. javascript 实现在线多币种汇率实时换算
  18. 【TCP长连接】使用TCP长连接提升服务性能
  19. c语言期末复习专项——编程题
  20. python列表去括号_python 去括号

热门文章

  1. ubuntu 安装、配置FTP
  2. 线上前端静态资源代理到本地的几种方式
  3. python 日程管理程序_日程管理软件走马观花
  4. 用组策略统一域中所有客户端桌面
  5. 养生指南 1 : 度 / 平衡(奔三了嘛 , 偶像)
  6. 【转载】一文总结学习 Python 的 14 张思维导图
  7. Oracle EBS R12开发工具安装
  8. 前端性能检测Performance
  9. 星域CDN:角逐的市场 期待被定义的CDN
  10. ODOO 用户默认头像-怎么设置的默认头像