延迟消息交换

1.6版本引入了对延迟消息交换插件的支持spring-doc.cadn.net.cn

该插件目前被标记为实验性,但截至撰写本文时,已发布超过一年。 如果插件的更改需要,我们计划尽快支持此类更改。 因此,春季AMQP中的这种支持也应被视为实验性。 该功能已在 RabbitMQ 3.6.0 和插件 0.0.1 版本中测试。

使用兔子管理员要宣布交换为延迟,你可以设置延迟交换豆上的属性变为true. 这兔子管理员使用交换类型(直接,扇形,依此类推)以设置X-延迟型论元和 以类型声明交换x延迟消息.spring-doc.cadn.net.cn

延迟性质(默认:false在使用 XML 配置交换豆时也可用。 以下示例展示了如何使用它:spring-doc.cadn.net.cn

<rabbit:topic-exchange name="topic" delayed="true" />

要发送延迟消息,你可以设置X延迟标题通过消息属性,如下示例所示:spring-doc.cadn.net.cn

MessageProperties properties = new MessageProperties();
properties.setDelay(15000);
template.send(exchange, routingKey,
        MessageBuilder.withBody("foo".getBytes()).andProperties(properties).build());
rabbitTemplate.convertAndSend(exchange, routingKey, "foo", new MessagePostProcessor() {

    @Override
    public Message postProcessMessage(Message message) throws AmqpException {
        message.getMessageProperties().setDelay(15000);
        return message;
    }

});

要检查消息是否延迟,请使用getReceivedDelay()方法消息属性. 这是一个独立的属性,以避免对由输入消息生成的输出消息进行非预期传播。spring-doc.cadn.net.cn