线上MQ消息堆积了怎么处理?被面试官问麻了

文章讨论了在面对线上RabbitMQ消息堆积时的处理方法,包括检查代码问题、临时扩容、优化消费逻辑、业务拆分、服务器升级、限流以及设置监控报警。还强调了避免消息重复投递和处理业务回滚的重要性和策略。
摘要由CSDN通过智能技术生成

面试官:我看你简历上有使用RabbitMQ的经历,那你能说说如果现在线上MQ消息大量堆积,需要你处理,你要怎么解决?
小小:把队列删了这样就看不到堆积了。
面试官:好好好,果然是百年难得一遇的天才。
小小:那我面试通过了?
面试官:滚出去!
以上场景根据现实改编,当时的面试官就是我。

————————————————————————————————————————————————————————
那么问题来了

线上MQ消息堆积了怎么处理?

这个问题如果直接说增加消费者去做临时扩容,那么很大概率被直接PASS,那么该怎么去回答呢?具体分为这几个步骤:

  1. 先查看服务器日志,是否因为代码问题导致消费异常而堆积,如果是代码问题,把程序员祭天
  2. 如果不存在代码问题,只是消费过慢导致堆积,先临时扩容,增加消费者把线上堆积处理掉
  3. 线上处理完则开始复盘,调整消费逻辑,优化代码,如果是业务线过长原因,则进行业务拆分,保证单条队列的消费效率
  4. 如果存在频繁消息堆积,则可能需要对服务器进行升级,或者进行扩容,提高消费能力
  5. 如果消费者处理能力实在有限,可能需要对生产者进行限流
  6. 根据业务设置合理的超时时间和重试次数
  7. 可以设置监控和报警系统,当队列中的消息堆积达到一定阈值时,及时发出报警通知,以便及时处理。
  8. 合理的业务代码,防止消息重复投递

注:如果业务线过长且无法进行拆分,则需要考虑超时重试问题,如果面临一些无法回滚的业务(例如我们曾因为短信消费超时导致几天内重复发送数十万条短信),一定要做好处理,可在消费前以加锁或其他方式,保证消息不会被重复消费。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值