Rocketmq 如何处理消息积压 ?
一、消息积压发现
1、Console入口




A、延迟数量(Delay)
消息积压数量,即当前Topic还剩下多少消息未处理,该值越大,表示积压的消息越多
B、最后消费时间(LastConsumeTime)
当前Topic消息最后被消费的时间,该值表示消费端有多长时间未拉取消息进行消费
2、使用 RocketMQ 管理控制台:
RocketMQ 提供了管理控制台,可以实时查看 Broker、主题、队列和消费者组的状态。通过管理控制台,可以直观地了解消息堆积数量、消费速率、消息延迟和消费者偏移量等关键指标
3、集成监控系统:
可以集成 Prometheus、Grafana 等监控系统,通过 RocketMQ 的监控插件(如 RocketMQ Exporter)收集和展示关键指标。通过监控系统,可以设置告警规则,当消息堆积数量、消费速率或消息延迟超过阈值时,及时发出告警
4、分析日志:
RocketMQ 提供了详细的日志记录功能,可以通过分析日志文件,了解生产者和消费者的运行状态,排查消息积压的原因。例如,可以通过日志查看消费者是否存在处理异常、网络延迟等问题
二、导致消息堆积出现的原因有以下几种
1、生产端引起的积压
在某些情况下,生产者可能会突然增加发送速率,或者持续发送大量消息,超出了系统的处理能力
流量高峰:特定事件或情况可能导致消息量暴增,如促销活动、日志收集系统在错误发生时的突增等
生产者配置不当:生产者配置错误可能导致发送过多的消息到队列
2、消费端引起的积压
最常见的原因是消费者处理消息的速度跟不上生产者生产消息的速度。这可能是由于:
消费者处理逻辑复杂或效率低:如果每条消息的处理时间过长,会导致处理队列中的消息堆积
消费者数量不足:消费者的数量可能不足以处理入队消息的数量,尤其是在高峰时间
消费者处理能力预估不足:针对消费者的处理能力没有做好压测和限流
消费端存在业务逻辑bug,导致消费速度低于平常速度
3、资源限制
服务器性能限制:CPU、内存或I/O性能不足,无法高效处理消息
网络问题:网络延迟或带宽不足也会影响消息的发送和接收速度
我们常用的排查方法是跟踪线程栈,利用jstack命令查看线程运行情况,以此探究线程的运行情况。通常可以使用下面的命令:
ps -ef | grep java
jstack pid > j1.log
三、处理消息积压的解决方案
1、增加消费者线程数量

2、消息业务异步处理

3、调整消费者的消费模式,将顺序消费改为并行消费,提高效率

4、使用消息过滤
通过消息过滤,只需消费重要的消息,降低消费压力

5、临时扩容
在消息积压严重时,可以临时启动额外的消息者实例来快速消费积压的消息

6、调整生产者发送策略
如果可能,可以调整生产者的发送策略,如降低发送频率或者实现背压机制

Rocketmq 如何处理消息积压 ?的更多相关文章
- RocketMQ事务消息实现分析
这周RocketMQ发布了4.3.0版本,New Feature中最受关注的一点就是支持了事务消息: 今天花了点时间看了下具体的实现内容,下面是简单的总结. RocketMQ事务消息概要 通过冯嘉发布 ...
- RocketMQ之消息幂等
幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 首先我们了解一下什么是 ...
- rocketmq事务消息入门介绍
说明 周五的时候发了篇:Rocketmq4.3支持事务啦!!!,趁着周末的时候把相关内容看了下,下面的主要内容就是关于RocketMQ事务相关内容介绍了. 说明: 今天这篇仅仅是入门介绍,并没有涉及到 ...
- RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得
前言 首先说一点,企业中最常用的实际上既不是RocketMQ,也不是Kafka,而是RabbitMQ. RocketMQ很强大,但主要是阿里推广自己的云产品而开源出来的一款消息队列,其实中小企业用Ro ...
- RocketMQ源码 — 九、 RocketMQ延时消息
上一节消息重试里面提到了重试的消息可以被延时消费,其实除此之外,用户发送的消息也可以指定延时时间(更准确的说是延时等级),然后在指定延时时间之后投递消息,然后被consumer消费.阿里云的ons还支 ...
- 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
当我们说顺序时,我们在说什么? 日常思维中,顺序大部分情况会和时间关联起来,即时间的先后表示事件的顺序关系. 比如事件A发生在下午3点一刻,而事件B发生在下午4点,那么我们认为事件A发生在事件B之前, ...
- RocketMQ源码分析之RocketMQ事务消息实现原理上篇(二阶段提交)
在阅读本文前,若您对RocketMQ技术感兴趣,请加入 RocketMQ技术交流群 根据上文的描述,发送事务消息的入口为: TransactionMQProducer#sendMessageInTra ...
- rocketmq总结(消息的顺序、重复、事务、消费模式)
rocketmq总结(消息的顺序.重复.事务.消费模式) 参考: http://www.cnblogs.com/wxd0108/p/6038543.html https://www.cnblogs.c ...
- RocketMQ 事务消息
RocketMQ 事务消息在实现上充分利用了 RocketMQ 本身机制,在实现零依赖的基础上,同样实现了高性能.可扩展.全异步等一系列特性. 在具体实现上,RocketMQ 通过使用 Half To ...
- RocketMQ生产者消息篇
系列文章 RocketMQ入门篇 RocketMQ生产者流程篇 RocketMQ生产者消息篇 前言 上文RocketMQ生产者流程篇中详细介绍了生产者发送消息的流程,本文将重点介绍发送消息的通信模式以 ...
随机推荐
- 金山毒霸提示这是高危入侵行为taskeng.exe
如果安装了金山毒霸之后经常会弹窗提示:这是高位入侵行为.行为发起taskeng.exe.可疑进程regsvr32.EXE,可疑路径antivirus.php,如下入所示: 可以直接点击"阻止 ...
- linux 亲测wget安装7.3 liferay流程
liferay wget 7.3版本安装1. 下载软件包 sudo wget https://sourceforge.net/projects/lportal/files/Liferay%20Port ...
- XposedAPI pg walkthrough Intermediate
nmap ┌──(root㉿kali)-[~/lab] └─# nmap -p- -A 192.168.226.134 Starting Nmap 7.94SVN ( https://nmap.org ...
- 详细剖析Java动态线程池的扩容以及缩容操作
前言 在项目中,我们经常会使用到线程来处理加快我们的任务.但为了节约资源,大多数程序员都会把线程进行池化,使用线程池来更好的支持我们的业务. Java线程池ThreadPoolExecutor有几个比 ...
- FFT & NTT & FWT
只是学习笔记,真心推荐 cmd ,他讲的真的细到把所有的前置知识都讲了一遍. \[FBI \ WARNING:本篇 NTT 部分非常不完善 \] FFT & NTT & FWT 大杂烩 ...
- CSP 考前注意事项
考试策略 J组 争取在 \(10:00\) 之前把所有题目稳定拿下.如果有题目没有思路.比较难写还没调出来或者想不出来,那么可以先放着,跳题.把其他所有题打完之后写个对拍,挂后台一直拍着. 然后剩下的 ...
- 记一次CUDA报错
报错内容:CUDA error: device-side assert triggered 原因:使用ResNet50训练时使用了pretrained=True的模型,但实际类别数classes远超过 ...
- 安全稳定地远程访问飞牛NAS
春节前从一个网友那里了解到一个新的NAS--飞牛. 起因是我们一个用户用我们的SD-WAN来远程访问飞牛NAS,市面上做NAS的很多,之所以单独体验这个产品主要是: 不需要购买硬件,这个是非常重要的, ...
- SAM 学习笔记
发现自己根本没有 SAM 基础,所以想补一篇学习笔记. SAM SAM 是一个可以接受字符串 \(s\) 的所有后缀的最小 \(DFA\)(确定性有限状态自动机).不过他最大的用处和后缀数组一样,都是 ...
- 推荐几款开源且免费的 .NET MAUI 组件库
前言 今天大姚给大家推荐 3 款开源且免费的 .NET MAUI 组件库. .NET MAUI介绍 .NET 多平台应用 UI (.NET MAUI) 是一个跨平台框架,用于使用 C# 和 XAML ...