Flex Gateway新着情報
Governance新着情報
Monitoring API Manager次の例は、2 つのフロー内でメッセージをパブリッシュおよびコンシュームするように JMS 用 Anypoint Connector (JMS Connector) の Publish consume 操作を設定し、相関 ID を使用して受信メッセージが特定の送信メッセージへの応答であることを確認する方法を示しています。
最初のフローの HTTP Listener ソースで、HTTP 経由で投稿されるランダムなコンテンツを読み取ってフローを開始します。
Publish consume 操作では、HTTP Listener ソースから受信したコンテンツペイロードが含まれるメッセージを宛先キュー (Q1
) にパブリッシュします。
2 番目のフローの On New Message ソースで、最初のフローで設定したキュー Q1
に送信されたメッセージをリスンします。
引き続き 2 番目のフローの Publish 操作で、2 つのフロー内の要求メッセージと応答メッセージを相関する相関 ID 属性を使用して、メッセージを新しい宛先キュー (Q2
) にパブリッシュします。
最初のフローに戻り、Publish consume 操作で、相関 ID に一致する、Q2
のキューに送信されたメッセージをコンシュームします。
最後に最初のフローの Set Payload コンポーネントで値 It Works!
を返します。
この例をテストするには、次が必要です。
ActiveMQ ブローカーの Docker インスタンス。
ActiveMQ ブローカーを使用して 2 つのキュー (Q1
と Q2
) を作成する。
2 つのフローを含む Mule アプリケーションを作成する。
curl
コマンドを使用してアプリケーションを実行およびテストする。
ActiveMQ ブローカーの Docker インスタンスをインストールする方法とキューを作成する方法は、各ガイドラインドキュメントを参照してください。
メッセージをパブリッシュおよびコンシュームする Mule アプリケーションの作成を開始するには、最初のフローを作成します。
Studio の [Mule Palette (Mule パレット)] ビューで、[HTTP] > [Listener] を選択します。
HTTP Listener ソースを Studio キャンバスにドラッグします。
[HTTP Listener (HTTP リスナー)] 設定画面で、必要に応じて [Display Name (表示名)] 項目の値を変更します。
[Path (パス)] 項目を /test
に設定します。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の HTTP Listener のすべてのインスタンスで使用できるグローバル要素を設定します。
[General (一般)] タブで、次のパラメーターを設定します。
Host (ホスト): All Interfaces [0.0.0.0] (default)
Port (ポート): 8081
[OK] をクリックします。
[Publish consume] 操作を [HTTP Listener] の右にドラッグします。
[Connector configuration (コネクタ設定)] 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の [Publish consume] のすべてのインスタンスで使用できるグローバル要素を設定します。
[Connection (接続)] 項目を [ActiveMQ Connection (ActiveMQ 接続)] に設定します。
[Required Libraries (必須のライブラリ)] セクションで、[Configure… (設定…)] をクリックして連動関係をインストールします。
[Specification (仕様)] 項目と [Caching strategy (キャッシュ戦略)] 項目をデフォルト値に設定します。
[Username (ユーザー名)] 項目と [Password (パスワード)] 項目の両方を admin
に設定します。
[Factory configuration (ファクトリー設定)] を [Edit inline (インライン編集)] に設定します。
[Broker url (ブローカー URL)] 項目を tcp://localhost:61616
に設定します。
[OK] をクリックします。
[Publish consume] > [General (一般)] セクションで、[Destination (宛先)] 項目を Q1
に設定して 2 つのキューのうちの最初のキューを作成します。このキューでは HTTP Listener のペイロードを含むメッセージをパブリッシュします。
この例では、[Message (メッセージ)] セクションで [Correlation ID (相関 ID)] を 0303456
に設定します。
[Reply To (応答先)] 項目を [Edit inline (インライン編集)] に設定します。
[Destination Name (宛先名)] 項目を Q2
に設定して 2 番目の宛先キューを作成します。このキューでは 2 番目のフローの Publish 操作で送信されたメッセージをコンシュームします。
[Consume Configuration (コンシューム設定)] セクションで [Ack mode (肯定応答モード)] 項目を [IMMEDIATE (即時)] に設定します。
[Set Payload] コンポーネントを [Publish consume] の右にドラッグします。
[Value (値)] 項目を It Works!
に設定します。
引き続き 2 番目のフローを追加してアプリケーションを作成します。
JMS の [On New Message] ソースを最初のフローの下にドラッグします。
最初のフローを作成するステップ 9 ~ 16 を繰り返して、ソースのグローバル要素を作成します。
[On New Message] 設定画面で、[Destination (宛先)] 項目を Q1
に設定し、最初のフローの Publish consume 操作で設定した宛先をソースでリスンすることを示します。
JMS の [Publish] 操作をソースの右にドラッグします。
[Connector configuration (コネクタ設定)] を On New Message ソースと同じ設定にします。
[Destination (宛先)] 項目を Q2
に設定し、メッセージを最初のフローの Publish consume 操作の宛先キューにパブリッシュすることを示します。
[Message (メッセージ)] セクションで [Correlation ID (相関 ID)] 項目を attributes.headers.correlationId
に設定し、要求メッセージと応答メッセージを相関します。
Mule アプリケーションを作成したら、それを実行してテストします。
Studio で、Mule アプリケーションを保存します。
Package Explorer でプロジェクト名をクリックし、[Run (実行)] > [Run As (別のユーザーとして実行)] > [Mule Application (Mule アプリケーション)] をクリックします。
ブラウザーを開き、http://0.0.0.0:8081/test
と入力します。
この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:jms="http://www.mulesoft.org/schema/mule/jms" xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd">
<http:listener-config name="HTTP_Listener_config" >
<http:listener-connection host="0.0.0.0" port="8081" />
</http:listener-config>
<jms:config name="JMS_Config_ActiveMQ" >
<jms:active-mq-connection username="admin" password="admin">
<jms:factory-configuration brokerUrl="tcp://localhost:61616"/>
</jms:active-mq-connection>
</jms:config>
<jms:config name="JMS_Config_ActiveMQ_2" >
<jms:active-mq-connection username="admin" password="ßadmin">
<jms:factory-configuration brokerUrl="tcp://localhost:61616"/>
</jms:active-mq-connection>
</jms:config>
<flow name="demo-jms-attributesFlow" >
<http:listener config-ref="HTTP_Listener_config" path="/test"/>
<jms:publish-consume destination="Q1" config-ref="JMS_Config_ActiveMQ">
<jms:message correlationId="0303456" >
<jms:reply-to destination="Q2" />
</jms:message>
<jms:consume-configuration ackMode="IMMEDIATE" />
</jms:publish-consume>
<set-payload value="It Works!" doc:name="Set Payload" />
</flow>
<flow name="demo-jms-attributesFlow1" >
<jms:listener doc:name="On New Message" config-ref="JMS_Config_ActiveMQ_2" destination="Q1"/>
<jms:publish doc:name="Publish" config-ref="JMS_Config_ActiveMQ_2" destination="Q2">
<jms:message correlationId="#[attributes.headers.correlationId]" />
</jms:publish>
</flow>
</mule>