目录
消息堆积
消息堆积的本质
当消息生产速度远远大于消息消费的速度,就会造成消息堆积。
消息堆积的后果
新消息无法进入队列、旧消息无法丢失、消息等待消费时间过长以至于超出了业务容忍范围。
消息堆积的原因
生产者突然大量发布消息、消费者消费失败、消费者出现性能瓶颈、消费者直接挂掉了
如何解决消息堆积
1.排查消费者的消费性能瓶颈
2.增加消费者的多线程处理
3.部署增加多个消费者
4.新增消息队列,可以想办法把消息按顺序的转移到一个新的队列,让消费者消费新队列中的消息
5.通过修改RabbitMQ的两个参数来增大消费消息的并发数:
concurrentConsumers:对每个listener在初始化的时候设置的并发消费者的个数。
prefetchCount:每次一次性从broker里面取的待消费的消息的个数。prefetchCount是BlockingQueueConsumer内部维护的一个阻塞队列LinkedBlockingQueue的大小,其作用就是如果某个消费者队列阻塞,就无法接收新的消息&#