- RabbitMQ面试题:如何解决消息积压? --- 2022-0
- RabbitMQ延迟消息:死信队列 | 延迟插件 | 二合一用法
- 阿里Java面试题剖析:如何解决消息队列的延时以及过期失效问题?
- 07、完了!生产事故!几百万消息在消息队列里积压了几个小时!
- 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处
- 六、如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎
- 如何解决消息队列的延时以及过期失效问题?
- 阿里Java面试题剖析:如何解决消息队列的延时以及过期失效问题?
- 消息中间件面试题:如何解决消息队列的延时以及过期失效问题?消息队
- 完了!生产事故!几百万消息在消息队列里积压了几个小时!
如何解决RabbitMQ消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?数百万消息持续积压几个小时,说说怎么解决?
提示:出现消息积压,主要是因为消息的消费速度跟不上消息产生的速度。
消息堆积解决策略1
消费者临时扩容,例如:原先是10个消费者,扩容10倍,100个消费者,目的是加快消息消费速度。
提示:扩容数量根据实际情况确定。
消息堆积解决策略2
修复消费者问题,消费者本身的问题,主要体现在两个方面: 业务异常和消息处理速度慢。
- 如果是消费者自己异常了,导致无法正常消费消息,只要修复异常问题即可。
- 如果是消费者处理速度慢,可以分析下业务代码有没有进一步提升性能的空间,有就优化,没有就走策略1扩容方案。
消息堆积解决策略3
如果消息堆积的太多,短时间内消费不完(需要几个小时,甚至更长时间),可以做个取舍,反正前面的客户已经得罪了,新的客户不能得罪,我们可以确保新的消息可以正常消费,老的消息慢慢处理。
可以新开一个队列,让新的消息投递到这个队列,新开一批消费者,处理新的消息,老的队列里面堆积的消息,让一批消费者慢慢跑。
消息堆积解决策略4
如果堆积的消息不重要,直接干掉(删除)队列,创建新的队列,处理新的消息就行,不能在一棵树上吊死。
消息堆积解决策略5
如果消息设置了TTL,这种情况,消息可能因为已经到期,被丢弃了,丢了多少我们不知道,为确保业务消息都被正常消费,这里首先要决绝的是怎么找回丢失的消息,主要思路是根据业务数据,重新投递消息到MQ中,例如:根据订单记录,如果订单未处理,重新投递消息到消息队列。
网友评论