文章目录
0、问题
默认情况下,RabbitMQ 会将接收到的消息保存在内存中,以降低消息收发的延迟。这样会导致两个问题:
- 一旦 MQ 宕机,内存中的消息就会丢失
- 内存空间有限,当消费者故障或处理过慢时,会导致消息积压,引发 MQ 阻塞
1、数据持久化
RabbitMQ 实现数据持久化包括 3 个方面:
- 交换机持久化
- 队列持久化
- 消息持久化
1.1、交换机持久化
● 控制台
将 Durability 选为 Durable。
● 代码
Spring AMPQ 创建交换机时默认就处理成了 持久化的。
// 创建非持久化交换机
FanoutExchange fec = (FanoutExchange)ExchangeBuilder
.fanoutExchange("myJavaFanout2")
.durable(false)
.build();