RocketMQ(16) -- RocketMQ工作原理 -- 消息堆积与消费延迟

本文详细探讨了RocketMQ中消息堆积与消费延迟的原因和影响,主要瓶颈在于客户端消费能力,由消费耗时和并发度决定。消费耗时受代码逻辑尤其是外部I/O操作影响,消费并发度由单节点线程数和节点数量共同决定。避免消息堆积的方法包括优化消费耗时和合理设置消费并发度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分布式消息队列RocketMQ

3.8)消息堆积与消费延迟

3.8.1) 概念

消息处理流程中,如果Consumer的消费速度跟不上Producer的发送速度,MQ中未处理的消息会越来越多(进的多出的少),这部分消息就被称为堆积消息,消息出现堆积进而会造成消息的消费延迟。

以下场景需要重点关注消息堆积和消费延迟问题:

  1. 业务系统上下游能力不匹配造成的持续堆积,且无法自行恢复;

  2. 业务系统对消息的消费实时性要求较高,即使是短暂的堆积造成的消费延迟也无法接受。

3.8.2)产生原因分析

 Consumer使用长轮询Pull模式消费消息时,分为以下两个阶段:

3.8.2.1)消息拉取

Consumer通过长轮询Pull模式批量拉取的方式从服务端获取消息,将拉取到的消息缓存到本地缓冲队列中;

对于拉取式消费,在内网环境下会有很高的吞吐量,所以这一阶段一般不会成为消息堆积的瓶颈。

一个单线程单分区的低规格主机(Consumer,4C8G),其可达到几万的TPS。如果是多个分区多 个线程,则可以轻松达到几十万的TPS。

3.8.2.2)消息消费

Consumer将本地缓存的消息提交到消费线程中,使用业务消费逻辑对消息进行处理,处理完毕后获取到一个结果,这是真正的消息消费过程。

此时Consumer的消费能力就完全依赖于消息的消费耗

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值