延遲訊息交換

版本 1.6 引入了對 延遲訊息交換外掛 的支援

該外掛目前標記為實驗性,但已經可用一年多(撰寫本文時)。如果外掛的更改需要,我們計劃儘快支援此類更改。因此,Spring AMQP 中的此支援也應視為實驗性。此功能已透過 RabbitMQ 3.6.0 和外掛版本 0.0.1 進行了測試。

要使用 RabbitAdmin 將交換宣告為延遲,可以將交換 Bean 上的 delayed 屬性設定為 trueRabbitAdmin 使用交換型別(DirectFanout 等)設定 x-delayed-type 引數並宣告型別為 x-delayed-message 的交換。

在使用 XML 配置交換 Bean 時,delayed 屬性(預設值:false)也可用。以下示例展示瞭如何使用它

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

要傳送延遲訊息,您可以透過 MessageProperties 設定 x-delay 標頭,如以下示例所示

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;
    }

});

要檢查訊息是否已延遲,請使用 MessageProperties 上的 getReceivedDelay() 方法。它是一個單獨的屬性,以避免意外傳播到從輸入訊息生成的輸出訊息。

© . This site is unofficial and not affiliated with VMware.