RabbitMQ常见问题之消息堆积
一、介绍
当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。最
早接收到的消息,可能就会成为死信,会被丢弃,这就是消息堆积问题。
解决消息堆积有三种种思路:
- 增加
更多消费者
,提高消费速度 - 在消费者内开启
线程池
加快消息处理速度 - 扩大
队列容积
,提高堆积上限
从RabbitMQ
的3.6.0
版本开始,就增加了Lazy Queues
的概念,也就是惰性队列。惰性队列的特征如下:
- 接收到消息后直接存入
磁盘
而非內存 - 消费者要消费消息时才会从磁盘中读取并加载到内存
- 支持数
百万条
的消息存储
二、使用惰性队列
1. 基于@Bean
1 | @Bean |
2. 基于@RabbitListener
1 | @RabbitListener(bindings = @QueueBinding( |