返信のリスン - Mule 4

要求と応答はアプリケーション間で非常に一般的なパターンです。そのため、AMQP Connector には ​publish-consume​ と呼ばれる専用の操作が用意されています。​publish-consume​ 操作により、メッセージを任意のエクスチェンジにパブリッシュし、別の宛先で応答を待機することができます。

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

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

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

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

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

この例では、この操作によって現在の ​payload​ を​本文​および一時的な宛先に対して設定されたメッセージの ​replyTo プロパティ​とするメッセージが ​targetExchange​ に ​publish​ されます。 続いて、メッセージがコンシュームされるか ​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>
xml

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