メッセージのパブリッシュと返信のリスン

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

この操作を使用する場合、送信メッセージの JMSReplyTo ヘッダーにはアプリケーションが応答を待機する宛先の ID が含まれます。この宛先は、既知の宛先か、または特定の応答メッセージを受け取るためだけに一時的に作成される宛先のどちらかになります。

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

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

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

<jms:publish-consume config-ref="config" destination="targetDestination" maximumWait="20" maximumWaitUnit="SECONDS"/>

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

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

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

<jms:publish-consume config-ref="config" destination="targetDestination">
    <jms:message>
        <jms:reply-to destination="replyToDestination"/>
    </jms:message>
</jms:publish-consume>

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

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub