RabbitMQ-数据持久化

一、持久化类型

1、交换机持久化(SpringAMQP默认)

2、队列持久化(SpringAMQP默认)

3、消息持久化

二、消息持久化

1、纯内存操作

如果采用纯内存操作,那么消息存储达到队列的上限之后,会有一个page out操作,这个操作是将队列中已经有的一部分MQ消息转移到磁盘,给队列腾出空间,使得队列能够继续接收MQ消息,这个转移MQ消息的过程是一个阻塞的过程,转移过程中,队列无法接收MQ消息。

2、持久化消息

SpringAMQP默认采用这种方式,这种方式需要将MQ消息入队的同时,也写一份进入到磁盘中,但是与Page out操作有一定区别,不会阻塞;当队列满了之后,会有一次清空内存的操作,这个操作会使得队列接收消息变慢,但是不至于阻塞。

3、LazyQueue

惰性队列,消息直接写入到磁盘,内存中会保留最近的一部分消息,很少的一部分;当消费者需要消息时,才会到到磁盘中去读取;3.12版本之后,队列都是LazyQueue的模式,无法更改。

相关推荐
Seven974 分钟前
记录一次线上问题排查:JDK序列化问题
java
风象南5 分钟前
SpringBoot中4种登录验证码实现方案
java·spring boot·后端
giao源10 分钟前
JAVA实现将富文本内容插入已有word文档并下载(dock4j+jsoup)
java·开发语言·word
努力也学不会java11 分钟前
【网络原理】 网络编程套接字
java·开发语言·网络·网络协议·tcp/ip·php
_一条咸鱼_15 分钟前
破茧成蝶!深度剖析 Android Button 底层运作奥秘
android·java·面试
_一条咸鱼_17 分钟前
惊爆!Android EditText 使用原理深度大揭秘
android·java·面试
希忘auto28 分钟前
详解RabbitMQ工作模式之工作队列模式
rabbitmq
小霸王_3003786336 分钟前
《系统架构 - Java 企业应用架构中的完整层级划分》
java·架构·系统架构
云之兕39 分钟前
Spring Boot 中多线程的基础使用
java·前端·spring boot
半青年2 小时前
单例模式:全局唯一性在软件设计中的艺术实践
java·c++·python·单例模式