Flex Gateway新着情報
Governance新着情報
Monitoring API Manager要求と応答はアプリケーション間で広く行われているパターンであるため、新しい IBM MQ Connector は 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
にパブリッシュします。
その後、メッセージがコンシュームされるか、maximumWait 時間が経過するまで (この場合は IBM-MQ:TIMEOUT エラーで操作が失敗します)、replyToDestination キューから自動的に応答のコンシュームを試みます。
IBM MQ Connector v1.5.0:
JMS には、要求メッセージと応答メッセージの相関方法を示すよく知られた要求応答パターンが 2 つあります。これは、受信したメッセージが出力メッセージの正しい応答であることを保証する方法を意味します。
このパターンは、Publish Consume 操作のデフォルトです。このパターンを使用すると、宛先キューにメッセージをパブリッシュした後の操作で、要求メッセージのパブリッシュに使用する相関 ID と同じ相関 ID を持つメッセージを期待するセレクターを使用して、メッセージがコンシュームされます。
<flow name="publish-consume-correlation-id">
<ibm-mq:publish-consume config-ref="config"
destination="targetDestination"
requestReplyPattern="CORRELATION_ID">
<ibm-mq:message >
<ibm-mq:reply-to destination="replyToDestination" />
</ibm-mq:message>
</ibm-mq:publish-consume>
<logger message="Received message from 'replyToDestination' with Correlation ID: #[attributes.headers.correlationId]"/>
</flow>
<flow name="ibm-mq-listener-correlation-id" >
<ibm-mq:listener config-ref="config" destination="targetDestination">
<ibm-mq:reply-to-response requestReplyPattern="CORRELATION_ID" />
</ibm-mq:listener>
<logger level="INFO" message="About to reply to 'targetDestination' with Correlation ID: #[attributes.headers.correlationId]"/>
</flow>
メッセージ ID パターンは、相関 ID パターンとは異なり、宛先キューにメッセージをパブリッシュした後の操作で、要求メッセージのメッセージ ID と同じ値の相関 ID を持つメッセージを期待するセレクターを使用して、メッセージがコンシュームされます。
<flow name="publish-consume-message-id">
<ibm-mq:publish-consume config-ref="config"
destination="targetDestination"
requestReplyPattern="MESSAGE_ID">
<ibm-mq:message >
<ibm-mq:reply-to destination="replyToDestination" />
</ibm-mq:message>
</ibm-mq:publish-consume>
<logger message="Received message from 'replyToDestination' with Correlation ID: #[attributes.headers.correlationId]"/>
</flow>
<flow name="ibm-mq-listener-message-id" >
<ibm-mq:listener config-ref="config" destination="targetDestination">
<ibm-mq:reply-to-response requestReplyPattern="MESSAGE_ID" />
</ibm-mq:listener>
<logger level="INFO" message="About to reply to 'targetDestination' with Correlation ID: #[attributes.headers.messageId]"/>
</flow>