> 消息在未消费前存在队列中,所以消息想要持久化,队列首先要持久化
1. RabbitMQ持久化机制分为**队列持久化**、**消息持久化**、**交换器持久化**。不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。
2. 如果队列持久化,消息没有持久化,重启rabbitmq服务后,队列存在,但是队列里的消息都会消失
3. 只有持久化队列和消息,重启后消息才不会丢失,当有消费者时消息可以被正常消费
4. 如果有交换机,交换机也需要持久化
# 1. 交换机持久化
~~~java
@Bean
public DirectExchange rabbitmqDemoDirectExchange() {
//Direct交换机
return new DirectExchange(RabbitMQConfig.RABBITMQ_DEMO_DIRECT_EXCHANGE, true, false);
}
~~~
# 2. 队列持久化
~~~java
@Bean
public Queue fanoutExchangeQueueA() {
//只需要指定名称,默认是持久化的
return new Queue(RabbitMQConfig.FANOUT_EXCHANGE_QUEUE_TOPIC_A);
}
~~~