SpringBoot 消息队列RabbitMQ 消息可靠性 数据持久化 与 LazyQueue

介绍

在默认情况下,RabbitMQ会将接收到的信息保存在内存中以降低消息收发的延迟

  • 一旦MO宕机,内存中的消息会丢失
  • 内存空间有限,当消费者故障或处理过慢时,会导致消息积压,引发MQ阻塞

在消息队列运行的过程中,出现问题导致服务的重启等都回造成信息的丢失。这时候就需要去持久化即使重启了没消费完的数据也不会丢失。

交换机持久化

在创建交换机时应该选择持久化交换机,否者就是临时交换机重新启动会就没了。

队列持久化


使用LazyQueue可以让数据持久化的性能更加的好


LazyQueue介绍

从RabbitMQ的3.6.0版本开始,就增加了LazyQueue的概念,也就是惰性队列。

  • 接收到消息后直接存入磁盘而非内存(内存中只保留最近的消息,默认2048条)
  • 消费者要消费消息时才会从磁盘中读取并加载到内存支持数百万条的消息存储
  • 支持数百万条的消息存储

在3.12版本后,所有队列都是LazyQueue模式,无法更改

相关推荐
Web Security Loop7 分钟前
MAC卸载JDK环境
java·macos·jdk
nnerddboy1 小时前
Rust教程04:引用、借用与切片
开发语言·后端·rust
Rain的Java大神之路1 小时前
线上接口负载满了如何解决
java·数据库·redis·后端·缓存·面试·架构
counting money1 小时前
Tomcat 专题:从基础架构到性能调优与 WebSocket 实战
java·websocket·tomcat
xiaohaiAIgeo2 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
weixin_431600442 小时前
NestJS 入门(7):生命周期钩子——构造函数和 `OnModuleInit` 差在哪?
前端·后端·学习·node.js·nest.js
小强库计算机毕业设计2 小时前
基于 Spring Boot + Vue3 的校园管理系统
java·spring boot·后端·项目实战·管理系统·技术分享·校园管理系统实战
霸道流氓气质3 小时前
Java中信号量(Semaphore):从本地到分布式
java·开发语言·分布式
怪奇云呼军3 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
编程令我快乐3 小时前
maven部分构建参数讲解
java·maven