> 消息在未消費前存在隊列中,所以消息想要持久化,隊列首先要持久化
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);
}
~~~