如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?

思考

  1. 是什么导致了消息积压?是consumer程序bug?是consumer消费的速度落后于消息生产的速度?
  2. 积压了多长时间,积压了多少量?
  3. 对业务的影响?

解决思路

1. 如果仅仅是consumer消费的速度落后于消息生产的速度的话,可以考虑采用扩容消费者群组的方式。

2. 如果积压比较严重,积压了上百万、上千万的消息。

  1. 修复现有consumer的问题,并将其停掉。
  2. 重新创建一个容量更大的topic,比如patition是原来的10倍。
  3. 编写一个临时consumer程序,消费原来积压的队列。该consumer不做任何耗时的操作,将消息均匀写入新创建的队列里。
  4. 将修复好的consumer部署到原来10倍的机器上消费新队列。
  5. 消息积压解决后,恢复原有架构。

3. 如果消息已经丢失

由于有的消息队列有过期失效的机制,造成了大量的消息丢失。
这种情况只能将丢失的那批数据,写个临时程序,一点一点的查出来,然后重新灌入mq里面去。

大量消息在mq里积压了几个小时了还没解决  

  几千万条数据在MQ里积压了七八个小时,最简单的方法可以让他恢复消费速度,然后等待几个小时消费完毕。

  一个消费者一秒是1000条,一秒3个消费者是3000条,一分钟是18万条,1000多万条 ,所以如果你积压了几百万到上千万的数据,即使消费者恢复了,也需要大概1小时的时间才能恢复过来

  一般这个时候,只能操作临时紧急扩容了,具体操作步骤和思路如下:

    先修复consumer的问题,确保其恢复消费速度,然后将现有cnosumer都停掉

    新建一个topic,partition是原来的10倍,临时建立好原先10倍或者20倍的queue数量

    然后写一个临时的分发数据的consumer程序,这个程序部署上去消费积压的数据,消费之后不做耗时的处理,直接均匀轮询写入临时建立好的10倍数量的queue

    接着临时征用10倍的机器来部署consumer,每一批consumer消费一个临时queue的数据

    这种做法相当于是临时将queue资源和consumer资源扩大10倍,以正常的10倍速度来消费数据

    等快速消费完积压数据之后,得恢复原先部署架构,重新用原先的consumer机器来消费消息

topic ---- kafka

数据库 ---- ES

参考:

https://www.jianshu.com/p/ee7b1a2a2e61

https://www.cnblogs.com/mengchunchen/p/10025139.html

消息积压完整面试问题:

https://blog.csdn.net/weixin_44175121/article/details/90485143

消息积压---一般处理方法相关推荐

  1. kafka消息积压解决

    消息积压的解决方法 加强监控报警以及完善重新拉起任务机制,这里就不赘述了. 1.实时/消费任务挂掉导致的消费积压的解决方法 在积压数据不多和影响较小的情况下,重新启动消费任务,排查宕机原因. 如果消费 ...

  2. RabbitMQ 可靠性、重复消费、顺序性、消息积压解决方案

    前言 为什么引入消息队列?引入 MQ 给我们解决了一些问题,但同时又引入了一些复杂的问题,这些问题是大型项目中必须解决的重点,更重要的是,面试也经常问.实际上消息队列可以说是没法百分之百保证可靠性的! ...

  3. Kafka消息积压案例分析

    案例 一个微服务同一个分组消费同一个topic的kafka消息,不通业务通过key值区分,由于其中一个业务消息量大,偶尔会出现消费滞后的情况,导致当前微服务消费组出现大量消息积压情况,影响业务. 简单 ...

  4. 消息队列中:消息可靠性、重复消息、消息积压、利用消息实现分布式事务

    点击下方"Java编程鸭"关注并标星 更多精彩 第一时间直达 一.如何确保消息不丢失? 1.检测消息丢失的方法 可以利用消息队列的有序性来验证是否有消息丢失.在Producer端给 ...

  5. RabbitMQ常见问题解决方案——消息丢失、重复消费、消费乱序、消息积压

    文章目录 背景 RabbitMQ常见问题解决方案 1. RabbitMQ的可靠性(消息丢失问题) 1.1 生产者丢失消息 1.2 RabbitMQ弄丢消息 1.2.1 交换机持久化 1.2.2 队列持 ...

  6. SpringBoot整合RabbitMQ 消息可靠投递、手动ack、延迟队列、死信队列、消息幂等性保障、消息积压

    1.消息可靠投递 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景.RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式. confirm 确认模式 ...

  7. 消息队列(基础篇)- 7 消息积压了该如何处理

    我们都知道,消息积压的直接原因,一定是系统中的某个部分出现了性能问题,来不及处理上游发送的消息,才会导致消息积压. 所以,我们先来分析下,在使用消息队列时,如何来优化代码的性能,避免出现消息积压.然后 ...

  8. #rabbitMQ #重复消费 #可靠投递 #延时投递 #rabbitMQ交换机类型#重复消费#消息积压#消息丢失

    exchange类型: 1, direct 指定direct后, 消息会根据你设置的routeing key(路由键), 发送到对应的队列中 1,新建direct交换机 2,添加队列, 并且绑定路由键 ...

  9. MQ消息积压了如何处理

    大家都知道在MQ的使用中,消息积压是一个比较常见问题,现在就这个问题进行一个探讨. 原因: 消息积压的直接原因,一定是系统中的某个部分出现了性能问题,来不及处理上游发送的消息,才会导致消息积压. 在使 ...

最新文章

  1. 跟我一起用node-express搭建一个小项目(node连接mongodb)[三]
  2. CTF题目中遇到的PHP考点总结(一)
  3. self motivated ddl
  4. 其利断金前一句是什么_绍兴晚报丨裘亚黎说|围城外的灵魂拷问:人为什么要结婚?...
  5. 文件上传优化CommonsMultipartResolver
  6. 计算程序执行时间的函数
  7. ActiveMQ_使用经验
  8. 前端开发 图片的插入 。。。。需演练
  9. oracle索引的监控
  10. “曲屏版iPhone 13 Pro” 2799元!荣耀60 SE新版上架:12GB+256GB超大存储
  11. Linux的nat端口转换实例
  12. 服务器双硬盘系统安装系统安装,固态机械混合安装教程!双硬盘安装系统的方法...
  13. android onupgrade调用,Android Sqlite中常见的对于onUpgrade的处理方法
  14. 去水印软件哪个好_去水印工具
  15. 内网穿透之Http穿透(让全网都可以访问你的项目)
  16. 数理统计笔记2:总体均值的抽样分布
  17. 英语流利说 第13天
  18. win11本地用户和组找不到的解决办法
  19. 计算机网络谢希仁第七版课后习题答案(第六章)
  20. python实现微信投票_python 模拟微信投票

热门文章

  1. 奇舞学院JavaScript视频-如何写好原生js
  2. 最新 eleme 超市药店数据采集爬虫接口0329
  3. 大数据信息资料采集:美国财富500强企业信息资料采集爬取
  4. WebRTC-FEC
  5. 全选快捷键ctrl加什么 全选快捷键ctrl加哪个键 全选是ctrl加什么?
  6. Flutter | 超简单仿微信QQ侧滑菜单组件(改)
  7. VRML---第一章(基本概念、语法)
  8. HDU - 2553:N皇后问题
  9. 分治回溯算法----八皇后问题
  10. 100行实现《贪吃蛇》小游戏详解(Qt)