当前位置: 首页 > news >正文

【rabbitmq的消息堆积问题】


RabbitMQ一直以来都有一个缺点,就是对于消息堆积问题的处理不好。当RabbitMQ中有大量消息堆积时,整体性能会严重下降。而目前新推出的Quorum队列以及Stream队列,目的就在于解决这个核心问题。但是这两种队列的稳定性和周边生态都还不够完善,因此,在使用RabbitMQ时,还是要非常注意消息堆积的问题。尽量让消息的消费速度和生产速度保持一致。

而如果确实出现了消息堆积比较严重的场景,就需要从数据流转的各个环节综合考虑,设计适合的解决方案。

消息生产者端:

对于生产者端,最明显的方式自然是降低消息生产的速度。但是,生产者端产生消息的速度通常是跟业务息息相关的,一般情况下不太好直接优化。但是可以选择尽量多采用批量消息的方式,降低IO频率。

RabbitMQ服务端:

RabbitMQ本身其实也在着力于提高服务端的消息堆积能力。对于消息堆积严重的队列,可以预先添加懒加载机制,或者创建Sharding分片队列,这些措施都有助于优化服务端的消息堆积能力。另外,尝试使用Stream队列,也能很好的提高服务端的消息堆积能力。

消息消费者端:

要提升消费速度最直接的方式,就是增加消费者数量了。尤其当消费端的服务出现问题,已经有大量消息堆积时。这时,可以尽量多的申请机器,部署消费端应用,争取在最短的时间内消费掉积压的消息。但是这种方式需要注意对其他组件的性能压力。

对于单个消费者端,可以通过配置提升消费者端的吞吐量。

# 单次推送消息数量 
spring.rabbitmq.listener.simple.prefetch=1 
# 消费者的消费线程数量 
spring.rabbitmq.listener.simple.concurrency=5

灵活配置这几个参数,能够在一定程度上调整每个消费者实例的吞吐量,减少消息堆积数量。

当确实遇到紧急状况,来不及调整消费者端时,可以紧急上线一个消费者组,专门用来将消息快速转录。保存到数据库或者Redis,然后再慢慢进行处理。

相关文章:

  • 【perl】环境搭建
  • Java基础面试重点-3
  • JAVA学习笔记DAY7——Spring_Ioc
  • Java:爬虫htmlunit抓取a标签
  • 【讲解下目标追踪】
  • AWD攻防比赛流程手册
  • 23.3 时间-解析、计算、比较时间
  • iCopy for Mac 剪切板 粘贴工具 历史记录 安装(保姆级教程,新手小白轻松上手)
  • 课设--学生成绩管理系统(二)
  • FinalShell 连接虚拟机超时,主机ping不通虚拟机,解决
  • MongoDB使用$addToSet向数组中添加元素
  • 设备驱动程序和 PCI 电源管理
  • 健身行动日
  • 如何生成自定义二维码和实现安全便捷的扫码登录功能以及对接企业微信API
  • 打破安全设备孤岛,多源威胁检测与响应(XDR)如何构建一体化安全防线
  • [deviceone开发]-do_Webview的基本示例
  • DataBase in Android
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • HTTP 简介
  • interface和setter,getter
  • MySQL几个简单SQL的优化
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • php ci框架整合银盛支付
  • Python socket服务器端、客户端传送信息
  • Python打包系统简单入门
  • 从0实现一个tiny react(三)生命周期
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 跨域
  • 爬虫模拟登陆 SegmentFault
  • 算法系列——算法入门之递归分而治之思想的实现
  • 我们雇佣了一只大猴子...
  • #Java第九次作业--输入输出流和文件操作
  • (13)Hive调优——动态分区导致的小文件问题
  • (2024,Vision-LSTM,ViL,xLSTM,ViT,ViM,双向扫描)xLSTM 作为通用视觉骨干
  • (9)目标检测_SSD的原理
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (附源码)计算机毕业设计ssm电影分享网站
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (四)linux文件内容查看
  • (转)菜鸟学数据库(三)——存储过程
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • .cfg\.dat\.mak(持续补充)
  • .NET Core 发展历程和版本迭代
  • .net core 连接数据库,通过数据库生成Modell
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .net framework 4.8 开发windows系统服务
  • .NET多线程执行函数
  • .Net中wcf服务生成及调用
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • []Telit UC864E 拨号上网
  • [18] Opencv_CUDA应用之 基于颜色的对象检测与跟踪