Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerJMS 用 Anypoint Connector (JMS Connector) の Consume 操作を使用すると、フローの任意の時点で任意の指定宛先からのメッセージをコンシュームできます。
次の例では、[Destination (宛先)] 項目で指定したキュー内の新規メッセージをコンシュームするように Consume 操作を設定します。この操作では、キューで JMS メッセージが使用可能になるたびに Mule メッセージが返されます。Mule メッセージは次の要素で構成されます。
ペイロードとしてのメッセージのコンテンツ
メッセージ属性に含まれるメッセージのメタデータ
このメタデータは、3 つの部分から構成され、JMS メッセージで使用できるすべての情報にマップされます。
AckId
ヘッダー
プロパティ
デフォルトでは、コンシュームされたメッセージは、メッセージを受信するフローの実行が正常に完了した場合にのみ肯定応答されます (「ACKed」)。何らかの処理を行った後でメッセージの肯定応答を制御する場合は、ackMode
を MANUAL
に設定します。
メッセージ肯定応答についての詳細は、「メッセージ肯定応答の管理」を参照してください。
Studio でソースを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、[JMS] > [Consume] を選択します。
[Consume] を Studio キャンバスにドラッグします。
[Consume] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[Consume] 設定画面の [Destination (宛先)] で、メッセージのコンシューム元である宛先の名前 (#[vars.destination]
など) を指定します。
XML エディターでは、<jms:consume>
設定は次のように記述されます。
<jms:consume config-ref="JMS_config" destination="#[vars.destination]"/>
次の例では、[Consumer type (コンシューマー種別)] 項目を [Topic consumer (トピックコンシューマー)] に設定し、トピックサブスクリプションから新規メッセージをコンシュームするように Consume 操作を設定します。
Studio でソースを設定する手順は、次のとおりです。
[Mule Palette (Mule パレット)] ビューで、[JMS] > [Consume] を選択します。
[Consume] を Studio キャンバスにドラッグします。
[Consume] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[Consume] 設定画面の [Destination (宛先)] で、メッセージのコンシューム元である宛先の名前 (#[vars.destination]
など) を指定します。
[Consumer type (コンシューマー種別)] 項目を [Topic consumer (トピックコンシューマー)] に設定します。
XML エディターでは、<jms:consume>
および <jms:topic-consumer/>
設定は次のように記述されます。
<jms:consume config-ref="JMS_config" destination="#[vars.destination]">
<jms:consumer-type>
<jms:topic-consumer/>
</jms:consumer-type>
</jms:consume>
デフォルトでは、Consume 操作では、メッセージを最大 10,000 ミリ秒待機した後、エラー JMS:TIMEOUT
を送信します。
ユーザーのユースケースに合わせて、[Maximum wait (最大待機)] および [Maximum wait unit (最大待機単位)] 項目を設定します。
メッセージの到着を無制限に待つ場合は、[Maximum wait (最大待機)] 項目を -1
に設定します。これで、JMS:TIMEOUT
エラーが回避されます。
特定の頻度でメッセージをポーリングする場合、メッセージの待機でコンシューマーをブロックすることは望まれませんが、代わりに、メッセージが存在する場合にメッセージのコンシュームを試みることはできます。
この場合、[Maximum wait (最大待機)] 項目を 0
に設定します。これにより、待機は発生せず、指定した宛先に使用できるメッセージがなくてもエラーはスローされません。
コンシュームできるメッセージが存在しない場合、Consume 操作の出力は null
になり、エラーはスローされません。
JMS Connector では、Consume 操作の [Selector (セレクター)] 項目で指定した標準の JMS セレクター言語に基づいて、コンシュームするメッセージを絞り込むことができます。これにより、セレクター言語に一致するメッセージのみが受信され、宛先にある他のメッセージはすべて無視されます。
次の例では、他のキューよりも先にメッセージを処理する優先キューを設定します。
Studio で、フローから [Consume] 操作を選択します。
[Destination (宛先)] 項目を openTickets
に設定します。
[Selector (セレクター)] 項目を JMSPriority=8
に設定します。
JMS Connector の On New Message のメッセージの絞り込み image::jms-consume-selector.png[Consume 操作の画面で、受信メッセージを絞り込むように [Selector (セレクター)] 項目を設定する]
XML エディターでは、selector
設定は次のように記述されます。
<jms:consume config-ref="JMS_config" destination="openTickets" selector="JMSPriority=8"/>
JMS Connector では、MM_MESSAGE_CONTENT_TYPE
プロパティに基づいてメッセージの MIME タイプ (contentType
) を判別します。ただし、メッセージのコンテンツを管理する必要がある場合は、[Content-Type (コンテンツタイプ)] 項目を、必要な特定のコンテンツタイプ値に設定します。
デフォルトでは、他の情報が提供されていない場合、JMS Connector は Mule Runtime Engine のデフォルトエンコードがメッセージのエンコードと一致するものと想定します。別の種別のエンコードを設定するには、[Encoding (エンコード)] 項目を使用します。
次の例では、コンテンツタイプとエンコードを設定します。
Studio で、フローから [Consume] 操作を選択します。
[Content-Type (コンテンツタイプ)] 項目を application/JSON
に設定します。
[Encoding (エンコード)] 項目を UTF-8
に設定します。
XML エディターでは、contentType
および encoding
設定は次のように記述されます。
<jms:consume destination="#[vars.destination]" contentType="application/JSON" encoding="UTF-8"/>