Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerJMS 用 Anypoint Connector (JMS Connector) の Publish 操作を使用すると、新しい JMS メッセージを作成し、キューまたはトピックにかかわらず指定した宛先に送信できます。この操作を使用して、メッセージの内容だけでなく、必要なヘッダーも設定できます。
Publish 操作では、メッセージペイロード内のすべての内容を、指定したキューにパブリッシュします。次の例では、[Destination (宛先)] 項目で指定したキューにメッセージをパブリッシュするように操作を設定します:
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (invoiceQueue
など) に設定します。
XML エディターでは、<jms:publish>
および destination
の設定は次のように記述されます。
<jms:publish destination="invoiceQueue" config-ref="JMS_config"/>
適切な形式ではないためにペイロードを変換する必要がある場合、Publish 操作の前に DataWeave 変換を配置できますが、これによりメッセージペイロードが変更され、変換の後に配置された操作に影響することがあります。
この影響を回避するには、Publish 操作の内部に DataWeave 変換を配置します。この変換では、送信中のメッセージに影響することなく、パブリッシュするコンテンツが生成されます。次の例では、操作の内部で変換を設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (invoiceQueue
など) に設定します。
[Body (本文)] 項目で、次の DataWeave 変換を設定します。
%dw 2.0
output application/json
---
payload.payments
XML エディターでは、<jms:body>
設定は次のように記述されます。
<jms:publish destination="invoiceQueue" config-ref="JMS_config">
<jms:message>
<jms:body>#[%dw 2.0
output application/json
---
payload.payments
]</jms:body>
</jms:message>
</jms:publish>
Publish 操作では、指定したトピック宛先にメッセージをパブリッシュすることもできます。操作とメッセージのすべての設定は同じため、[Destination type (宛先種別)] 項目を [TOPIC (トピック)] に設定するだけで済みます。
次の例では、トピック宛先にメッセージをパブリッシュするように操作を設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名に設定します。例: .トピック宛先への Publish 操作の設定 image::jms-publish-config-3.png[「Publish」 設定画面で、「Destination type (宛先種別)」 項目を 「TOPIC (トピック)」 に設定する]
XML エディターでは、<jms:publish>
および destinationType
の設定は次のように記述されます。
<jms:publish destination="invoiceEvents" destinationType="TOPIC" config-ref="JMS_config">
<jms:message>
<jms:body>#[%dw 2.0
output application/json
---
payload.payments
]</jms:body>
</jms:message>
</jms:publish>
各 JMS メッセージには一連のヘッダーがあり、これらを使用して存続期間やメッセージの優先度などのメタデータを渡すことができます。
優先キューを設定するには、[Priority (優先度)] 項目をデフォルトとは異なる値に設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (priorityQueue
など) に設定します。
[Publish Configuration (パブリッシュ設定)] セクションで、[Priority (優先度)] 項目を attributes.queryParams.priority
に設定します。
XML エディターでは、<jms:publish>
および priority
の設定は次のように記述されます。
<jms:publish priority="#[attributes.queryParams.priority]" destination="priorityQueue" config-ref="JMS_config"/>
パブリッシュされた各 JMS メッセージは、存続期間ヘッダーと共に送信されます。このヘッダーではメッセージをコンシュームできる期間が宣言され、この期間が過ぎるとメッセージの有効期限が切れます。操作で [Time to live (存続期間)] 項目と [Time to live unit (存続期間単位)] 項目を設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (vars.destination
など) に設定します。
[Publish Configuration (パブリッシュ設定)] セクションで、[Time to live (存続期間)] 項目を vars.timeToLive
に設定します。
[Time to live unit (存続期間単位)] 項目を [SECONDS (秒)] に設定します。
XML エディターでは、timeToLive
および timeToLiveUnit
の設定は次のように記述されます。
<jms:publish timeToLive="#[vars.timeToLive]" timeToLiveUnit="SECONDS"
destination="#[vars.destination]" config-ref="JMS_config"/>
JMS 2.0 仕様を使用している場合は、メッセージをコンシューマーが使用できるようになるまでの待機時間であるメッセージ配信遅延を制御することもできます。操作で [Delivery delay (配信遅延)] 項目と [Delivery delay unit (配信遅延単位)] 項目を設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (vars.destination
など) に設定します。
[Delivery delay (配信遅延)] 項目を ${msgInitialDelay}
に設定します。
[Delivery delay unit (配信遅延単位)] 項目を [MILLISECONDS (ミリ秒)] に設定します。
XML エディターでは、deliveryDelay
および deliveryDelayUnit
の設定は次のように記述されます。
<jms:publish deliveryDelay="${msgInitialDelay}" deliveryDelayUnit="MILLISECONDS"
destination="#[vars.destination]" config-ref="JMS_config"/>
送信されたメッセージへの非同期応答が必要な場合、Publish 操作を使用すると、[Reply to (応答先)] 項目で任意の応答宛先を宣言できます。応答宛先は、JMS ヘッダーとしてメッセージのコンシューマーに渡されます。
次の例では、応答宛先を設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (vars.destination
など) に設定します。
[Reply to (応答先)] 項目を [Edit inline (インライン編集)] に設定します。
[Destination name (宛先名)] 項目を ${completionEventsDestination}
に設定します。
[Destination type (宛先種別)] 項目を [TOPIC (トピック)] に設定します。
XML エディターでは、<jms:reply-to>
、destination
、および destinationType
の設定は次のように記述されます。
<jms:publish config-ref="JMS_config" destination="#[vars.invoiceProcessorDestination]">
<jms:message>
<jms:reply-to destination="${completionEventsDestination}" destinationType="TOPIC"/>
</jms:message>
</jms:publish>
Publish 操作では、[Correlation ID (相関 ID)] 項目で送信メッセージの相関 ID を設定できます。
まず、メッセージのパブリッシュ時に相関 ID を送信するかどうかを設定する必要があります。送信する場合、[Send correlation id (相関 ID を送信)] 項目を次のいずれかのオプションに設定します。
ALWAYS
常にヘッダーを送信する
NEVER
ヘッダーを送信しない
AUTO
デフォルト値。アプリケーションの設定を使用する
次に、メッセージを送信するイベントの相関 ID を使用するか、メッセージビルダーで独自のカスタム相関 ID を設定できます。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (attributes.headers.replyTo.destination
など) に設定します。
[Send correlation id (相関 ID を送信)] 項目を [ALWAYS (常時)] に設定します。
[Correlation ID (相関 ID)] 項目を attributes.headers.correlationId
に設定します。
XML エディターでは、endCorrelationId
および correlationId
の設定は次のように記述されます。
<jms:publish config-ref="JMS_config" sendCorrelationId="ALWAYS" destination="#[attributes.headers.replyTo.destination]">
<jms:message correlationId="#[attributes.headers.correlationId]"/>
</jms:publish>
JMS メッセージで各種プロパティを使用して、他のメッセージングシステムとの互換性の確立やカスタムメッセージセレクターの作成などを行うことができます。プロパティの一部はよく知られた JMS 標準プロパティですが、その他にも実装やカスタムユーザー設定に基づくプロパティがあります。Publish 操作では、これらのプロパティをすべてメッセージ内で直接設定できます。
送信メッセージのプロパティを設定する必要がある場合、メッセージ内で [Properties (プロパティ)] 項目を設定し、DataWeave を使用してマップのインライン宣言を行います。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (${bridgeDestination}
など) に設定します。
[Destination type (宛先種別)] 項目を [TOPIC (トピック)] に設定します。
[Body (本文)] 項目を "bridged_" ++ payload
に設定します。
[Properties (プロパティ)] 項目を次の DataWeave コードに設定します。
{
AUTH_TYPE: 'jwt',
AUTH_TOKEN: attributes.queryParams.token
}
XML エディターでは、<jms:body>
および <jms:properties>
の設定は次のように記述されます。
<jms:publish config-ref="JMS_config" destination="${bridgeDestination}" destinationType="TOPIC">
<jms:message>
<jms:body>#["bridged_" ++ payload]</jms:body>
<jms:properties>#[{
AUTH_TYPE: 'jwt',
AUTH_TOKEN: attributes.queryParams.token
}]</jms:properties>
</jms:message>
</jms:publish>
JMS 仕様には JMSX プロパティが含まれます。このプロパティは、メッセージに関するメタデータが含まれるよく知られたプロパティセットです。次の例では、メッセージの [JMSX Properties (JMSX プロパティ)] 項目でこのプロパティを設定します。
Studio フローで、[Publish] 操作を選択します。
[Destination (宛先)] 項目をキュー名 (${bridgeDestination}
など) に設定します。
[Destination type (宛先種別)] 項目を [TOPIC (トピック)] に設定します。
[Body (本文)] 項目を "bridged_" ++ payload
に設定します。
[JMSX Properties (JMSX プロパティ)] 項目を [Edit inline (インライン編集)] に設定します。
[Jmsx group id (Jmsx グループ ID)] 項目を vars.currentGroup
に設定します。
[Jmsx user id (Jmsx ユーザー ID)] 項目を ${username}
に設定します。
XML エディターでは、<jms:jmsx-properties>
、jmsxGroupID
、および jmsxUserID
の設定は次のように記述されます。
<jms:publish config-ref="JMS_config" destination="${bridgeDestination}" destinationType="TOPIC">
<jms:message>
<jms:body>#["bridged_" ++ payload]</jms:body>
<jms:jmsx-properties jmsxGroupID="#[vars.currentGroup]" jmsxUserID="${username}"/>
</jms:message>
</jms:publish>