赞
踩
当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。之后发送的消息就会成为死信,可能会被丢弃,这就是消息堆积问题。
解决消息堆积有三种种思路:
1. 增加更多消费者,提高消费速度。
2. 在消费者内开启线程池加快消息处理速度。
3. 扩大队列容积,提高堆积上限,采用惰性队列。
惰性队列的特征如下:
1. 接收到消息后直接存入磁盘而非内存。
2. 消费者要消费消息时才会从磁盘中读取并加载到内存。
3. 支持数百万条的消息存储。
开启惰性队列的两种方式如下:
面试官:如果有100万消息堆积在MQ , 如何解决 ?
候选人:我在实际的开发中,没遇到过这种情况,不过,如果发生了堆积的问题,解决方案也所有很多的:
第一: 提高消费者的消费能力 ,可以使用多线程消费任务。
第二:增加更多消费者,提高消费速度,使用工作队列模式, 设置多个消费者消费消费同一个队列中的消息。
第三:扩大队列容积,提高堆积上限。
可以使用RabbitMQ惰性队列,惰性队列的好处主要是:
①接收到消息后直接存入磁盘而非内存。
②消费者要消费消息时才会从磁盘中读取并加载到内存。
③支持数百万条的消息存储。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。