此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring AMQP 3.2.0! |
延迟消息交换
版本 1.6 引入了对延迟消息交换插件的支持
该插件目前被标记为实验性,但已经可用一年多了(在撰写本文时)。 如果对插件的更改是必要的,我们计划尽快添加对此类更改的支持。 出于这个原因,Spring AMQP 中的这种支持也应该被认为是实验性的。 此功能已使用 RabbitMQ 3.6.0 和插件版本 0.0.1 进行了测试。 |
要使用 a 将交换声明为 delayed,可以将 exchange bean 上的属性设置为。
它使用 exchange 类型(、 和 等)来设置参数和
声明类型为 的 Exchange。RabbitAdmin
delayed
true
RabbitAdmin
Direct
Fanout
x-delayed-type
x-delayed-message
使用 XML 配置 exchange bean 时,该属性 (default: ) 也可用。
以下示例演示如何使用它:delayed
false
<rabbit:topic-exchange name="topic" delayed="true" />
要发送延迟消息,您可以通过 设置标头,如下例所示:x-delay
MessageProperties
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;
}
});
要检查消息是否延迟,请使用 .
它是一个单独的属性,用于避免意外传播到从 input 消息生成的输出消息。getReceivedDelay()
MessageProperties