応答のリスン

要求と応答はアプリケーション間で広く行われているパターンであるため、IBM MQ コネクタは publish-consume という操作をそのために提供しています。 publish-consume 操作では、メッセージを任意の宛先にパブリッシュしてから、異なる宛先での応答を待つことができます。

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

操作の結果として、コンシューム操作が呼び出された場合と同じ構造を持つ応答メッセージが受信されます。

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

一時キューを使用して応答を待機するための設定は非常にシンプルで、送信するメッセージを設定するだけで、操作は自動的に一時キューで応答を待ちます。

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

この例では、現在のペイロードを本文とし、JMSReplyTo ヘッダーを一時的な宛先としたメッセージを targetDestination にパブリッシュします。 その後、一時キューから応答メッセージをコンシュームするか、または maximumWait 時間が経過するまで (この場合は IBM-MQ:TIMEOUT エラーで操作が失敗します)、自動的に応答のコンシュームを試みます。

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

多くの場合、要求ごとに応答キューを作成する必要はなく、既知のキューを応答に使用できます。 必要な作業は、送信メッセージで reply-to パラメータを設定するだけです。

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

この例では、現在のペイロードを本文とし、JMSReplyTo ヘッダーを replyToDestination に設定したメッセージを targetDestination にパブリッシュします。

その後、replyToDestination キューから応答メッセージをコンシュームするか、または maximumWait 時間が経過するまで (この場合は IBM-MQ:TIMEOUT エラーで操作が失敗します)、自動的に応答のコンシュームを試みます。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub