如何使用spring-rabbitmq将消息标记为持久性?

Lal*_*hra 8 rabbitmq spring-rabbit spring-amqp

这就是我创建交换并将队列绑定到它的方式

<rabbit:topic-exchange id="dataExchange" name="MQ-EXCHANGE" durable="true">
        <rabbit:bindings>
            <rabbit:binding queue="COMM_QUEUE" pattern="queue.*" />
        </rabbit:bindings>
</rabbit:topic-exchange>
Run Code Online (Sandbox Code Playgroud)

我已经在互联网上阅读了很多帖子,其中写道如果要保护兔子或队列崩溃,还需要将消息标记为持久性.但我无法弄清楚如何标记我的消息持久性.

这就是我将消息发布到队列的方式

    @Autowired
    private RabbitTemplate template;

    @Override
    public void produceMessage(Object message, String routingKey) {
        template.convertAndSend(routingKey, message);  
    }
Run Code Online (Sandbox Code Playgroud)

我找了不同的API方法来了解这一点,并试图寻找我可以在XML中配置但无法找到方法的任何特定属性.任何指导?

Gar*_*ell 11

默认的传递模式(in MessageProperties) PERSISTENT.看到这里.

要使其成为非持久性,您需要使用带有a的convertAndSend(...)方法MessagePostProcessor来设置deliveryMode属性.