天津网站建设公司推荐,直接点击链接就能玩的小游戏,wordpress安装首页怎么写,郑州做网站找哪家好文章目录 一、介绍二、使用惰性队列1. 基于Bean2. 基于RabbitListener 一、介绍
当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。最 早接收到的消息#xff0c;可能就会成为死信#xff0c;会被丢弃#xff0c;这就… 文章目录 一、介绍二、使用惰性队列1. 基于Bean2. 基于RabbitListener 一、介绍
当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。最 早接收到的消息可能就会成为死信会被丢弃这就是消息堆积问题。
解决消息堆积有三种种思路
增加更多消费者提高消费速度在消费者内开启线程池加快消息处理速度扩大队列容积提高堆积上限
从RabbitMQ的3.6.0版本开始就增加了Lazy Queues的概念也就是惰性队列。惰性队列的特征如下
接收到消息后直接存入磁盘而非內存消费者要消费消息时才会从磁盘中读取并加载到内存支持数百万条的消息存储
二、使用惰性队列
1. 基于Bean
Beanpublic Queue lazyQueue(){return QueueBuilder.durable(lazy.queue).lazy().build();}2. 基于RabbitListener RabbitListener(bindings QueueBinding(value Queue(name lazy.queue, arguments Argument(name x-queue-mode, value lazy)),exchange Exchange(name simple.exchange),key lazy))public void listenLazyExchange(String msg){
// log.info(消费者接收到lazy.queue的消息【 msg 】);}