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 + "】");
    }
相关推荐
SMF191926 分钟前
【分布式文件存储系统Minio】使用Docker快速搭建 MinIO文件存储服务以及JAVA
分布式
2401_848009721 小时前
rabbitmq的高级知识-ttl与死信队列
分布式·rabbitmq·java-rabbitmq
wangjinxun2 小时前
LLM Xinference 安装使用(支持CPU、Metal、CUDA推理和分布式部署)
分布式
你这个代码我看不懂5 小时前
POD重启问题排查
分布式
luom01025 小时前
使用 Docker 部署 RabbitMQ 的详细指南
docker·容器·rabbitmq
无心水7 小时前
【任务调度:框架】10、2026最新!分布式任务调度选型决策树:再也不纠结选哪个
人工智能·分布式·算法·决策树·机器学习·架构·2025博客之星
上海锟联科技8 小时前
什么是DAS分布式光纤声波传感系统?原理与应用解析
数据结构·分布式·算法·分布式光纤传感
茶本无香8 小时前
【无标题】Kafka 系列博文(一):从零认识 Kafka,到底解决了什么问题?
java·分布式·kafka
czlczl200209258 小时前
插入时先写DB后写Redis?分布式中传统双写模式的缺陷
数据库·redis·分布式
斯普信专业组9 小时前
Kafka集群数据迁移方案:基于MirrorMaker2的集群迁移实施步骤
分布式·kafka·linq