RabbitMQ常见问题之消息堆积

文章目录

一、介绍

当生产者发送消息的速度超过了消费者处理消息的速度,就会导致队列中的消息堆积,直到队列存储消息达到上限。最

早接收到的消息,可能就会成为死信,会被丢弃,这就是消息堆积问题。

解决消息堆积有三种种思路:

  • 增加更多消费者,提高消费速度
  • 在消费者内开启线程池加快消息处理速度
  • 扩大队列容积,提高堆积上限

RabbitMQ3.6.0版本开始,就增加了Lazy Queues的概念,也就是惰性队列。惰性队列的特征如下:

  • 接收到消息后直接存入磁盘而非內存
  • 消费者要消费消息时才会从磁盘中读取并加载到内存
  • 支持数百万条的消息存储

二、使用惰性队列

1. 基于@Bean

java 复制代码
@Bean
    public Queue lazyQueue(){
        return QueueBuilder
                .durable("lazy.queue")
                .lazy()
                .build();
    }

2. 基于@RabbitListener

java 复制代码
    @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 + "】");
    }
相关推荐
七夜zippoe5 小时前
事务方案选型全景图:金融与电商场景的实战差异与落地指南
java·分布式·事务
葵野寺8 小时前
【RelayMQ】基于 Java 实现轻量级消息队列(七)
java·开发语言·网络·rabbitmq·java-rabbitmq
在未来等你9 小时前
Kafka面试精讲 Day 12:副本同步与数据一致性
大数据·分布式·面试·kafka·消息队列
蒋士峰DBA修行之路10 小时前
实验九 合理定义分布列实现性能优化-分布式聚集
分布式
echoyu.11 小时前
消息队列-kafka完结
java·分布式·kafka
七夜zippoe11 小时前
分布式事务性能优化:从故障现场到方案落地的实战手记(二)
java·分布式·性能优化
胚芽鞘68114 小时前
我对rabbitmq的理解(第一次)
分布式·rabbitmq
KIDAKN14 小时前
RabbitMQ 幂等性, 顺序性 和 消息积压
分布式·rabbitmq
Gu Gu Study14 小时前
Spring运行程序RabbitMQ并没有自动创建队列的问题解决
java·spring cloud·rabbitmq
Pure031914 小时前
Kafka 零拷贝总结
分布式·kafka