Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerJMS 用 Anypoint Connector (JMS Connector) の Publish consume 操作では、指定した任意の宛先にメッセージをパブリッシュした後、指定した異なる宛先でメッセージ応答をコンシュームできます。要求と応答はアプリケーション間で非常に一般的なパターンです。
この操作を使用する場合、送信メッセージの JMSReplyTo
ヘッダーにはアプリケーションが応答を待機する宛先の ID が含まれます。この宛先には、既知の宛先を使用できます。また、1 つの応答メッセージを受け取ることを目的として作成された一時的な宛先を使用できます。
操作の結果として、Consume 操作の呼び出しで使用された構造と同じ構造を持つ応答メッセージが受信されます。
一時キューを設定するには、送信するメッセージを設定します。これで操作は応答を自動的に待機します。
次の例では、次の特性を使用して、メッセージをパブリッシュするように Publish consume 操作を設定します。
現在の payload
をその本文とする
JMSReplyTo
ヘッダーを一時的な宛先に設定する
[Destination (宛先)] 項目を targetDestination
に設定する
これで、この操作では、メッセージがコンシュームされるか、[Maximum wait (最大待機)] に達するまで (この場合は JMS:TIMEOUT
エラーで失敗します)、一時キューから応答のコンシュームを自動的に試みます。
操作を設定する手順は、次のとおりです。
Studio フローで、[Publish consume] 操作を選択します。
コネクタの設定画面で、[Destination (宛先)] 項目を targetDestination
に設定します。
[Consume Configuration (コンシューム設定)] セクションまでスクロールダウンして、[Maximum wait (最大待機)] 項目を 20
に設定します。
[Maximum wait unit (最大待機単位)] を SECONDS
に設定します。
XML エディターでは、destination
および <jms:consume-configuration>
設定は次のように記述されます。
<jms:publish-consume
doc:name="Publish consume"
config-ref="config"
destination="targetDestination">
<jms:consume-configuration maximumWait="20" maximumWaitUnit="SECONDS" />
</jms:publish-consume>
応答用の既知のキューを設定するには、送信メッセージで [Reply To (応答先)] 項目を設定します。
次の例では、次の特性を使用して、メッセージを targetDestination
にパブリッシュするように Publish consume 操作を設定します。
現在の payload
をその本文とする
JMSReplyTo
ヘッダーを既知のキューに設定する
[Reply To (応答先)] 項目を replyToDestination
に設定する
これで、この操作では、メッセージがコンシュームされるか、[Maximum wait (最大待機)] に達するまで (この場合は JMS:TIMEOUT
エラーで失敗します)、既知の replyToDestination
キューから応答のコンシュームを自動的に試みます。
操作を設定する手順は、次のとおりです。
Studio フローで、[Publish consume] 操作を選択します。
コネクタの設定画面で、[Destination (宛先)] 項目を targetDestination
に設定します。
[Message (メッセージ)] セクションで [Reply To (応答先)] 項目を [Edit inline (インライン編集)] に設定します。
[Destination Name (宛先名)] 項目を replyToDestination
に設定します。
[Consume Configuration (コンシューム設定)] セクションまでスクロールダウンして、[Maximum wait (最大待機)] 項目を 20
に設定します。
[Maximum wait unit (最大待機単位)] を SECONDS
に設定します。
XML エディターでは、destination
および <jms:reply-to>
設定は次のように記述されます。
<jms:publish-consume config-ref="config" destination="targetDestination">
<jms:message>
<jms:reply-to destination="replyToDestination"/>
</jms:message>
<jms:consume-configuration maximumWait="20" maximumWaitUnit="SECONDS" />
</jms:publish-consume>
JMS では、要求メッセージと応答メッセージの相関方法を理解するのに役立つよく知られた 2 つの要求および応答パターンを使用します。操作の [Request-Reply Pattern (要求-応答パターン)] 項目で、CORRELATION_ID (デフォルト) および MESSAGE_ID パターンを設定できます。どちらのパターンでも、受信メッセージが送信メッセージへの正しい応答であることが保証されます。 この項目を [NONE (なし)] に設定することもできます。この場合、コンシューマーはセレクターを使用してメッセージを相関するのではなく、応答キューからコンシュームを試みます。確実に 1 つのメッセージのみが含まれる一時キューを使用して作業する場合は、このオプションが役立ちます。
CORRELATION_ID (デフォルト) パターンを使用すると、宛先キューにメッセージをパブリッシュした後の操作で、要求メッセージのパブリッシュに使用された相関 ID と同じ相関 ID を持つメッセージを期待するセレクターを使用して、メッセージがコンシュームされます。メッセージの相関関係 ID は、1 つのメッセージを相互にリンクするために使用する値です。
次の例の最初のフローでは、次の特性を使用して、メッセージを targetDestination
にパブリッシュするように Publish consume 操作を設定します。
現在の payload
をその本文とする
JMSReplyTo
ヘッダーを既知のキューに設定する
[Reply To (応答先)] 項目を replyToDestination
に設定する
[Request-Reply Pattern (要求-応答パターン)] 項目を CORRELATION_ID (デフォルト) に設定する
次に、2 番目のフローの On New Message ソースで、パブリッシュされたメッセージを読み取り、同じ相関 ID パターンを使用して応答します。Logger コンポーネントでメッセージ応答を記録します。
最初のフローに戻り、Publish consume 操作で受信した応答をコンシュームしたら、別の Logger コンポーネントで最終メッセージを記録します。
操作を設定する手順は、次のとおりです。
Studio フローで、[Publish consume] 操作を選択します。
コネクタの設定画面で、[Destination (宛先)] 項目を targetDestination
に設定します。
[Request-Reply Pattern (要求-応答パターン)] を CORRELATION_ID (デフォルト) に設定します。
[Message (メッセージ)] セクションで [Reply To (応答先)] 項目を [Edit inline (インライン編集)] に設定します。
[Destination Name (宛先名)] 項目を replyToDestination
に設定します。
[Logger] コンポーネントを [Publish consume] の右にドラッグします。
[Message (メッセージ)] 項目を Received message from 'replyToDestination' with Correlation ID: #[attributes.headers.correlationId]
に設定します。
JMS の [On New Message] ソースを最初のフローの下にドラッグします。
[Destination (宛先)] 項目を targetDestination
に設定します。
[Response (応答)] セクションまでスクロールダウンして、[Request-Reply Pattern (要求-応答パターン)] を CORRELATION_ID (デフォルト) に設定します。
別の [Logger] コンポーネントを [On New Message] の右にドラッグします。
[Message (メッセージ)] 項目を About to reply to 'targetDestination' with Correlation ID: #[attributes.headers.correlationId]
に設定します。
XML エディターでは、requestReplyPattern
設定は次のように記述されます。
<flow name="publish-consume-correlation-id">
<jms:publish-consume config-ref="config" destination="targetDestination" requestReplyPattern="CORRELATION_ID">
<jms:message >
<jms:reply-to destination="replyToDestination" />
</jms:message>
</jms:publish-consume>
<logger message="Received message from 'replyToDestination' with Correlation ID: #[attributes.headers.correlationId]"/>
</flow>
<flow name="jms-listener-correlation-id" >
<jms:listener config-ref="config" destination="targetDestination">
<jms:response requestReplyPattern="CORRELATION_ID" />
</jms:listener>
<logger level="INFO" message="About to reply to 'targetDestination' with Correlation ID: #[attributes.headers.correlationId]"/>
</flow>
MESSAGE_ID パターンを使用すると、宛先キューにメッセージをパブリッシュした後の操作で、要求メッセージのメッセージ ID と同じ値のメッセージ ID を持つメッセージを期待するセレクターを使用して、メッセージがコンシュームされます。メッセージ ID は、プロバイダーが送信した各メッセージを一意に識別する値です。
次の例の最初のフローでは、次の特性を使用して、メッセージを targetDestination
にパブリッシュするように Publish consume 操作を設定します。
現在の payload
をその本文とする
JMSReplyTo
ヘッダーを既知のキューに設定する
[Reply To (応答先)] 項目を replyToDestination
に設定する
[Request-Reply Pattern (要求-応答パターン)] 項目を MESSAGE_ID に設定する
次に、2 番目のフローの On New Message ソースで、パブリッシュされたメッセージを読み取り、同じメッセージ ID パターンを使用して応答します。Logger コンポーネントでメッセージ応答を記録します。
最初のフローに戻り、Publish consume 操作で受信した応答をコンシュームしたら、別の Logger コンポーネントで最終メッセージを記録します。
操作を設定する手順は、次のとおりです。
Studio フローで、[Publish consume] 操作を選択します。
コネクタの設定画面で、[Destination (宛先)] 項目を targetDestination
に設定します。
[Request-Reply Pattern (要求-応答パターン)] を MESSAGE_ID に設定します。
[Message (メッセージ)] セクションで [Reply To (応答先)] 項目を [Edit inline (インライン編集)] に設定します。
[Destination Name (宛先名)] 項目を replyToDestination
に設定します。
[Logger] コンポーネントを [Publish consume] の右にドラッグします。
[Message (メッセージ)] 項目を Received message from 'replyToDestination' with Message ID: #[attributes.headers.correlationId]
に設定します。
JMS の [On New Message] ソースを最初のフローの下にドラッグします。
[Destination (宛先)] 項目を targetDestination
に設定します。
[Response (応答)] セクションまでスクロールダウンして、[Request-Reply Pattern (要求-応答パターン)] を MESSAGE_ID に設定します。
別の [Logger] コンポーネントを [On New Message] の右にドラッグします。
[Message (メッセージ)] 項目を About to reply to 'targetDestination' with Message ID: #[attributes.headers.messageId]
に設定します。
<flow name="publish-consume-message-id">
<jms:publish-consume config-ref="config"
destination="targetDestination"
requestReplyPattern="MESSAGE_ID">
<jms:message >
<jms:reply-to destination="replyToDestination" />
</jms:message>
</jms:publish-consume>
<logger message="Received message from 'replyToDestination' with Message ID: #[attributes.headers.messageId]"/>
</flow>
<flow name="jms-listener-message-id" >
<jms:listener config-ref="config" destination="targetDestination">
<jms:response requestReplyPattern="MESSAGE_ID" />
</jms:listener>
<logger level="INFO" message="About to reply to 'targetDestination' with Message ID: #[attributes.headers.messageId]"/>
</flow>