06、RabbitMQ基础:消息可靠性之持久化

有道无术,术尚可求,有术无道,止于术。

文章目录

    • 前言
  • 交换机
  • 队列
  • 消息

前言

RabbitMQ服务端,意外退出或由于某种原因崩溃时,会忽视队列和消息。确保消息不会丢失需要将交换机、队列、消息都标记为持久化。

交换机

交换机的持久化其实就是相当于将交换机的属性在服务器内部保存,当MQ的服务器发生意外或关闭之后,重启RabbitMQ时不需要重新手动或执行代码去建立交换机,交换机会自动建立,相当于一直存在。

创建时,使用durable(true)设置持久化:

    @Bean("bootExchange")
    public Exchange bootExchange() {
   
     
        return ExchangeBuilder.directExchange("bootExchange").durable(true).build();
    }

队列

队列持久化类似于交换机持久化,创建时,使用durable(" ")设置持久化:

    @Bean("bootQueue")
    public Queue bootQueue() {
   
     
        return QueueBuilder.durable("bootQueue").build();
    }

消息

众所周知,RabbitMQ的消息是依附于队列存在的,所以想要消息持久化,那么前提是队列也要持久化。

RabbitTemplate发送消息默认就是持久化的:

RabbitTemplate.convertAndSend()

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: