遅延メッセージ交換
バージョン 1.6 は遅延メッセージ交換プラグイン (英語) のサポートを導入します
| このプラグインは現在、実験的なものとしてマークされていますが、1 年以上 (執筆時点で) 利用可能になっています。プラグインの変更が必要になった場合は、実用的になり次第、そのような変更のサポートを追加する予定です。そのため、Spring AMQP でのこのサポートも実験的なものと見なす必要があります。この機能は、RabbitMQ 3.6.0 およびプラグインのバージョン 0.0.1 でテストされました。 |
RabbitAdmin を使用して交換を遅延として宣言するには、交換 Bean の delayed プロパティを true に設定します。RabbitAdmin は交換型 (Direct、Fanout など) を使用して x-delayed-type 引数を設定し、型 x-delayed-message で交換を宣言します。
delayed プロパティ (デフォルト: false) は、XML を使用して交換 Bean を構成するときにも使用できます。次の例は、その使用方法を示しています。
<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() メソッドを使用します。これは、入力メッセージから生成された出力メッセージへの意図しない伝搬を避けるための別個のプロパティです。