返信のリスン方法

要求/返信はアプリケーション間で非常に一般的なパターンであるため、新しい AMQP コネクタには publish-consume と呼ばれる専用の操作が用意されています。publish-consume 操作により、メッセージを任意の交換にパブリッシュし、別の宛先で返信を待機することができます。

この操作を使用する場合、送信メッセージの replyTo プロパティにはアプリケーションが応答を待機するキューの ID が含まれます。この宛先は、既知の宛先である場合も、ある単独の応答メッセージを受け取るためだけに一時的に作成されるキューである場合もあります。

最後に、操作の結果としてメッセージが応答として受信され、consume 操作を呼び出した場合とまったく同じ構造になります。

一時キューでの応答の待機

一時的なキューを使用して応答を待機するのは非常にシンプルであり、送信されるメッセージを設定するだけで、この操作によって一時的なキューの応答が自動的に待機されます。

<amqp:publish-consume config-ref="config" exchangeName="targetExchange" maximumWait="20" maximumWaitUnit="SECONDS"/>

この例では、この操作によって現在の payload本文 および一時的な宛先に対して設定されたメッセージの replyTo プロパティ​とするメッセージが targetExchangepublish されます。 続いて、メッセージがコンシュームされるか maximumWait に達するまで (この場合、AMQP:TIMEOUT エラーが発生して失敗する)、自動的に一時的なキューからの応答をコンシュームしようと試みます。

既知のキューでの応答の受信

多くの場合、要求前の時点でキューを返信する必要はありませんが、代わりによく知られたキューが返信に使用されます。この場合、自分で実行するのは、送信メッセージで reply-to パラメータを設定することだけです。

<amqp:publish-consume config-ref="config" exchangeName="targetExchange">
    <amqp:message>
    		<amqp:properties reply-to="replyToQueue" />
    </amqp:message>
</amqp:publish-consume>

これで、この操作によって現在の payload本文 および replyToQueue を使用して設定された replyTo プロパティ​とするメッセージが targetExchangepublish されるようになりました。 続いて、メッセージがコンシュームされるか maximumWait に達するまで (この場合、AMQP:TIMEOUT エラーが発生して失敗する)、自動的に replyToQueue キューからの応答をコンシュームしようと試みます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub