Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerJMS 用 Anypoint Connector (JMS Connector) の On New Message ソースを使用すると、指定した宛先に到着した新しいメッセージをリスンし、コンシュームできます。
次の例では、[Destination (宛先)] 項目で指定したキューで新規メッセージをリスンするように On New Message ソースを設定します。この操作では、キューで JMS メッセージが使用可能になるたびに Mule メッセージが返されます。Mule メッセージは次の要素で構成されます。
ペイロードとしてのメッセージの内容
メッセージ属性に含まれるメッセージのメタデータ
デフォルトでは、コンシュームされたメッセージは、メッセージを受信するフローの実行が正常に完了した場合にのみ肯定応答されます (「ACKed」)。フローの実行中にエラーが発生した場合、セッションは回復され、メッセージは再配信されます。
Studio でソースを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、[JMS] > [On New Message] を選択します。
[On New Message] を Studio キャンバスにドラッグします。
[On New Message] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[On New Message] 設定画面の [Destination (宛先)] で、メッセージのコンシューム元である宛先の名前 (#[vars.destination]
など) を指定します。
XML エディターでは、<jms:listener>
設定は次のように記述されます。
<jms:listener config-ref="config" destination="#[vars.destination]"/>
次の例では、[Consumer type (コンシューマー種別)] 項目を [Topic consumer (トピックコンシューマー)] に設定し、トピックサブスクリプションから新規メッセージをリスンするように On New Message ソースを設定します。
Studio でソースを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、[JMS] > [On New Message] を選択します。
[On New Message] を Studio キャンバスにドラッグします。
[On New Message] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[On New Message] 設定画面の [Destination (宛先)] でメッセージのコンシューム元である宛先の名前 (#[vars.destination]
など) を指定します。
[Consumer type (コンシューマー種別)] 項目を [Topic consumer (トピックコンシューマー)] に設定します。
XML エディターでは、<jms:listener>
および <jms:topic-consumer/>
設定は次のように記述されます。
<jms:listener config-ref="JMS_config" destination="#[vars.destination]">
<jms:consumer-type>
<jms:topic-consumer/>
</jms:consumer-type>
</jms:listener>
JMS Connector では、On New Message ソースの [Selector (セレクター)] 項目で指定した標準の JMS セレクター言語に基づいてコンシュームするメッセージを絞り込むことができます。これにより、セレクター言語に一致するメッセージのみが受信され、宛先にある他のメッセージはすべて無視されます。
次の例では、特定のヘッダー優先キューに一致するメッセージを絞り込むように [Selector (セレクター)] 項目を設定します。
Studio で、フローから [On New Message] ソースを選択します。
[Destination (宛先)] 項目を openTickets
に設定します。
[Selector (セレクター)] 項目を JMSPriority=8
に設定します。
XML エディターでは、selector
設定は次のように記述されます。
<flow name="consumer">
<jms:listener config-ref="JMS_config" destination="openTickets" selector="JMSPriority=8"/>
</flow>
受信した JMS メッセージで ReplyTo
ヘッダー宛先が宣言されており、メッセージがエラーなく正常に処理された場合、On New Message ソースにより応答が自動的に生成され、コネクタにより応答が、[Destination (宛先)] 項目で指定された宛先にパブリッシュされます。
次の例では、操作の応答メッセージセクションを設定します。
Studio で、フローから [On New Message] ソースを選択します。
[Response (応答)] セクションで、[Ignore Jms replyTo Header (JMS replyTo ヘッダーを無視)] を True に設定します。これにより、自動応答が無効になります。
[Body (本文)] 項目を 'Message received was: ' ++ payload
に設定します。
[User Properties (ユーザープロパティ)] 項目を {'processedAt': now}
に設定します。
[Persistent delivery (永続的な配信)] を True に設定します。
[Priority (優先度)] 項目を 8
に設定します。
XML エディターでは、ignoreReplyTo
、body
、properties
、persistentDelivery
、および priority
の設定は次のように記述されます。
<jms:listener config-ref="config" destination="#[vars.destination]">
<jms:response priority="8" persistentDelivery="true" ignoreReplyTo="true">
<jms:body>#['Message received was: ' ++ payload]</jms:body>
<jms:properties>#[{'processedAt': now}]</jms:properties>
</jms:response>
</jms:listener>
より多くの処理能力が必要である場合は、[Number of consumers (コンシューマー数)] 項目を、On New Message でメッセージを同時にコンシュームするために使用するコンシューマーの数に設定します。
デフォルトでは、各ソースは 4
個のコンシューマーを使用してメッセージを同時に生成します。各コンシューマーはメッセージが処理されるまで待機するため、同時に最大 4
件のメッセージが転送されることになります。
次の例では、ソース内でコンシューマーの数を増やします。
Studio で、フローから [On New Message] ソースを選択します。
[Number of consumers (コンシューマー数)] 項目を 4
から、JMS メッセージを受信する同時コンシューマー数 (6
など) に増やします。
XML エディターでは、numberOfConsumers
設定は次のように記述されます。
<jms:listener doc:name="On New Message" destination="#[vars.destination]" numberOfConsumers="6"/>
JMS Connector では、MM_MESSAGE_CONTENT_TYPE
プロパティに基づいてメッセージの MIME タイプ (contentType
) を判別します。ただし、メッセージの内容を管理する必要がある場合は、[Inbound Content-Type (インバウンド内容の種類)] 項目を、必要な特定の内容の種類値に設定します。
デフォルトでは、他の情報が提供されていない場合、JMS Connector は Mule Runtime Engine のデフォルトエンコードがメッセージのエンコードと一致するものと想定します。別の種別のエンコードを設定するには、[Inbound Encoding (インバウンドエンコード)] 項目を使用します。
次の例では、インバウンド内容の種類とエンコードを設定します。
Studio で、フローから [On New Message] ソースを選択します。
[Inbound Content-Type (インバウンド内容の種類)] 項目を application/JSON
に設定します。
[Inbound Encoding (インバウンドエンコード)] 項目を UTF-8
に設定します。
XML エディターでは、inboundContentType
および inboundEncoding
設定は次のように記述されます。
<jms:listener doc:name="On New Message" destination="#[vars.destination]" numberOfConsumers="6" inboundContentType="application/JSON" inboundEncoding="UTF-8"/>