VM Connector のメッセージ属性の伝播の例 - Mule 4

次の例では、メッセージペイロードを介して VM キューからメッセージ属性を伝播する方法を示しています。最初のフローでは受信 HTTP メッセージ属性を受け入れ、さらに独自のカスタム属性を作成して、これらの両方の属性をメッセージペイロードに追加しているため、​VM Publish​ 操作でメッセージを VM キューにパブリッシュできます。2 番目のフローでは ​VM Listener​ ソースが前のフローからメッセージペイロードを受信し、独自のメッセージ属性を設定して、最後にメッセージペイロードがオブジェクトストアに保存されています。

次のスクリーンショットは、この例の Anypoint Studio アプリケーションフローを示しています。

VM Connector のフロー例
Figure 1. VM Connector のメッセージ属性の伝播フロー

VM パブリッシュフローを作成する

VM パブリッシュフローでは最初に受信 HTTP メッセージ属性をリスンし、メッセージ属性を JSON 構造メッセージに変換します。最後に、​VM Publish​ 操作がメッセージを VM キューでパブリッシュします。

VM パブリッシュフローを作成する手順は、次のとおりです。

  1. Studio で新しい Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)]​ ビューで、​HTTP Listener​ ソースを選択してキャンバスにドラッグします。
    このソースは受信 HTTP メッセージ属性をリスンします。

  3. [HTTP Listener]​ 設定画面で、​[Path (パス)]​ 項目を ​/message​ に設定します。

  4. [Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の ​HTTP リスナー​のすべてのインスタンスで使用できるグローバル要素を設定します。

  5. [Connection (接続)]​ セクションで ​[Protocol (プロトコル)]​ を ​HTTP (Default)​ に、​[Host (ホスト)]​ を ​All Interfaces [0.0.0.0] (default)​ に、​[Port (ポート)]​ を ​8081​ に設定します。

  6. [Base path (ベースパス)]​ を ​/publish​ に設定します。

  7. [Test Connection (接続をテスト)]​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。

  8. [OK]​ をクリックします。

  9. Transform Message​ コンポーネントを ​[HTTP Listener]​ の右にドラッグします。
    このコンポーネントは受信 HTTP メッセージ属性を JSON 構造に変換します。この構造には ​listenerPath​ 属性と ​method​ 属性の他、新しいカスタム ​sizeAttribute​ 属性が含まれます。

  10. Transform Message​ コンポーネントの ​[Output Payload (出力ペイロード)]​ スクリプトビューで、次の DataWeave コードを使用して ​listenerPath​ 属性と ​method​ 属性を定義します。

%dw 2.0
output application/json
---
{
listenerPath: attributes.listenerPath,
method: attributes.method
}
DataWeave
  1. Transform Message​ コンポーネントの ​[Output Attributes (出力属性)]​ スクリプトビューで、次の DataWeave コードを使用して新しいカスタム ​sizeAttribute​ 属性を定義します。

%dw 2.0
output application/json
---
{
sizeAttribute: sizeOf(attributes.listenerPath) + sizeOf(attributes.method)
}
DataWeave
  1. [VM Publish]​ 操作を ​Transform Message​ コンポーネントの右にドラッグします。
    この操作は、作成された JSON メッセージを VM キューでパブリッシュします。

  2. [VM Publish]​ 設定画面で、​[Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (+) をクリックして、VM キューのグローバル要素を設定します。

  3. [VM Config (VM 設定)]​ ウィンドウで、​[Queues (キュー)]​ に ​Edit inline​ を選択します。

  4. [Queue (キュー)]​ ウィンドウで、​[Queue name (キュー名)]​ を ​testqueue1​ に、​[Queue type (キュー種別)]​ を ​TRANSIENT (Default)​ に、​[Max outstanding message (最大送信メッセージ数)]​ を ​o​ に設定します。

  5. [Finish (完了)]​ をクリックします。

  6. [OK]​ をクリックします。

Studio での ​[VM Config (VM 設定)]​ のグローバル要素設定は次のようになります。

「VM Config (VM 設定)」 のグローバル要素設定
Figure 2. [VM Config (VM 設定)] のグローバル要素設定
  1. [VM Publish]​ 設定画面の ​[General (一般)] > [Content (コンテンツ)]​ 項目で、次の DataWeave コードを定義します。

%dw 2.0
output application/json
---
{'listenerPath': payload.listenerPath, 'method': payload.method, 'messageSize': attributes.sizeAttribute }
DataWeave

Studio での ​VM Publish​ 操作設定は次のようになります。

VM Publish 操作設定
Figure 3. VM Publish 操作設定

VM リスンフローを作成する

VM リスンフローは前の VM Publish フローからの VM キューの受信メッセージ属性をリスンし、​VM Listener​ ソースを通じて独自の属性を設定します。最後に、メッセージペイロードをオブジェクトストアに保存します。

VM リスンフローを作成する手順は、次のとおりです。

  1. [Mule Palette (Mule パレット)]​ ビューで、​VM Listener​ ソースを選択してキャンバスの最初の VM Publish フローの下にドラッグします。
    このソースは前のフローからの受信メッセージ属性をリスンします。

  2. [VM Listener]​ 設定画面で、​[Connector configuration (コネクタ設定)]​ 項目の横にあるプラス記号 (+) をクリックして、VM Publish フローで作成した VM キュー設定を選択します。

Studio での ​VM Listener​ ソース設定は次のようになります。

VM Listener ソース設定
Figure 4. VM Listener ソース設定
  1. Logger​ コンポーネントを ​VM Listener​ の右にドラッグします。

  2. [Logger]​ 設定画面で、​[Message (メッセージ)]​ 項目を ​payload​ に設定します。

  3. 別の ​Logger​ コンポーネントを最初の ​Logger​ コンポーネントの右にドラッグします。

  4. [Logger]​ 設定画面で、​[Message (メッセージ)]​ 項目を ​'VM message attributes: queue name ' ++ attributes.queueName as String​ に設定します。

  5. [ObjectStore Store]​ 操作を 2 番目の ​Logger​ コンポーネントの右にドラッグします。
    この操作は、受信した ​'method':'listenerPath'​ ペア属性をオブジェクトストアに保存します。

  6. [ObjectStore Store]​ 設定画面で、​[Display Name (表示名)]​ 項目を ​Add Http Request​ に設定します。

  7. [General (一般)]​ セクションで、​[Key (キー)]​ を ​payload.method​ に、​[Value (値)]​ を ​payload.listenerPath​ に設定します。

  8. [Object Store (オブジェクトストア)]​ 項目の横にあるプラス記号をクリックし、グローバルオブジェクトストア設定を定義します。

  9. デフォルト値を設定して、​[OK]​ をクリックします。

  10. プロジェクトを保存して、アプリケーションを実行します。

  11. 要求を ​http://127.0.0.1:8081/publish/message​ に送信してアプリケーションをテストします。

VM キューを通じたメッセージ属性の伝播の XML

この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。