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

介绍

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

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

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

交换机持久化

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

队列持久化


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


LazyQueue介绍

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

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

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

相关推荐
Zzj_tju1 分钟前
Java 从入门到精通(九):集合框架入门,List、Set、Map 到底该怎么选?
java·开发语言·list
东离与糖宝2 分钟前
Java 26惰性常量+HTTP/3:AI微服务启动提速5倍实战
java·人工智能
程序员小蛋4 分钟前
基于springboot宠物咖啡馆平台的设计与实现.7z(源码+论文)
spring boot·后端·宠物
紫丁香5 分钟前
02-Flask路由系统与URL映射机制深度解析
后端·python·flask
爱码少年6 分钟前
Springboot 工程中快速判断web应用服务器类型
java·spring boot
敲代码的嘎仔8 分钟前
Java后端开发——多线程面试题
java·开发语言·面试·多线程·八股·threadlocal·
sonnet-10298 分钟前
交换排序算法
java·c语言·开发语言·数据结构·笔记·算法·排序算法
NGC_66119 分钟前
深度解析 ConcurrentHashMap 1.8:put 与 get 核心流程全解
java·开发语言
杭州杭州杭州9 分钟前
J2EE实验
java·java-ee
紫丁香10 分钟前
01-Flask应用结构与核心对象深度解析
后端·python·flask