如何解决RocketMQ消息堆积的问题

MQ消息堆积是指生产者发送的消息短时间内在Broker端大量堆积,无法被消费者及时消费,从而导致业务功能无法正常使用。

消息堆积常见于以下几种情况:

(1)新上线的消费者功能有bug,消息无法被消费
(2)消费者实例宕机或者因为网络问题暂时无法与Broker建立连接。
(3)生产者短时间内大量推送消息到Broker,消费者消费能力不足。
(4)生产者未感知到Broker消费堆积,持续向Broker推送消息。

解决上述问题需要做到:

(1)解决问题一,要做好灰度发布,每次新功能上线前,选取一定比例的消费实例做灰度(灰度测试,就是在某项产品或者应用发布前,选择特定人群使用,逐步扩大其使用者的数量,以便于及时发现和纠正其中的问题),若出现问题,及时回滚;若消费者消费正常,平稳运行一段时间后,再升级其他实例。
(2)解决问题二,要做到多活,极端情况下,当一个IDC(互联网数据中心?)内消费实例全部宕机后,需要做到让其他IDC内的消费实例正常消费消息。同时,若一个IDC内Broker全部宕机,需要支持生产者将消息发送到其他idc中的Broker。
(3)解决问题三,要增强消费能力,主要是增加消费者线程数或者增加消费者实例的个数,增加消费者线程数要注意消费者及其下游服务的消费能力,上线前要将线程池参数调到最优状态。增加消费者实例个数,要注意Queue的数量,消费实例的数量要与Queue数量相同,如果消费实例数量超过Queue的数量,多出的消费实例分不到Queue,只增加消费实例是没有用的,如果消费实例数量比Queue数量少,每个消费实例承载的流量都是不同的。
(4)解决问题四,要做到熔断与隔离,当一个Broker的队列出现消息积压时,要对其熔断,将其隔离,将新消息发送发送至其他队列,过一定的时间,再解除其隔离。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值