# mulesoft Vm Connector - Full Documentation # Anypoint Studio を使用した VM Connector 2.0 の設定 Anypoint Studio (Studio) エディターは、Mule アプリケーション、プロパティ、および設定ファイルの設計と更新に役立ちます。 Studio でコネクタを追加および設定する手順は、次のとおりです。 1. [Mule プロジェクトを作成します](#create-mule-project)​。 2. [コネクタを Mule プロジェクトに追加します](#add-connector-to-project)​。 3. [コネクタのフローのソースを設定します](#configure-input-source)​。 4. [フローにコネクタの操作を追加します](#add-connector-operation)​。 5. [コネクタのグローバル要素を設定します](#configure-global-element)​。 [「アプリケーションログの表示」](#view-app-log)​で説明されているように、コネクタを実行するときに、アプリケーションログを表示して問題を確認できます。 Studio で初めてコネクタを設定する場合は、​[「Anypoint Studio を使用したコネクタの設定」](https://docs.mulesoft.com/connectors/introduction/intro-config-use-studio)​を参照してください。このトピックを参照した後、コネクタ項目についての詳細情報が必要な場合は、​[「VM Connector リファレンス」](https://docs.mulesoft.com/jp/vm-connector/latest/vm-reference)​を参照してください。 ## [](#create-mule-project)Mule プロジェクトを作成する Studio で、コネクタを追加および設定する新しい Mule プロジェクトを作成します。 1. Studio で、​**\[File (ファイル)\] > \[New (新規)\] > \[Mule Project (Mule プロジェクト)\]**​ を選択します。 2. Mule プロジェクトの名前を入力して、​**\[Finish (完了)\]**​ をクリックします。 ## [](#add-connector-to-project)コネクタを Mule プロジェクトに追加する VM Connector を Mule プロジェクトに追加して、XML コードにコネクタの名前空間およびスキーマの場所を自動的に入力し、プロジェクトの ​`pom.xml`​ ファイルに必須の連動関係を追加します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[(X) Search in Exchange ((X) Exchange 内を検索)\]**​ をクリックします。 2. **\[Add Dependencies to Project (連動関係をプロジェクトに追加)\]**​ ウィンドウで、検索項目に「​`vm connector`​」と入力します。 3. **\[Available modules (使用可能なモジュール)\]**​ で ​**\[VM Connector\]**​ をクリックします。 4. **\[Add (追加)\]**​ をクリックします。 5. **\[Finish (完了)\]**​ をクリックします。 Studio でコネクタを Mule プロジェクトに追加しても、Studio ワークスペースの他のプロジェクトはそのコネクタを使用できません。 ## [](#configure-input-source)ソースの設定 ソースは、指定された条件が満たされたときにフローを開始します。 次の入力元のいずれかを設定して、VM Connector で使用できます。 - VM キューでリスンすることでフローを開始する ​**VM Listener**​。 - 設定されているホストとポートで要求を受信するたびにフローを開始する ​**HTTP リスナー** - 時間ベースの条件が成立した時点でフローを開始する ​**Scheduler** たとえば、​**VM Listener**​ ソースを設定するには、次の手順を実行します。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[VM\] > \[Listener\]**​ を選択します。 2. **\[Listener\]**​ を Studio キャンバスにドラッグします。 3. **\[Listener (リスナー)\]**​ 設定画面で、必要に応じて ​**\[Display Name (表示名)\]**​ 項目の値を変更します。 4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の ​**Listener**​ ソースおよびその他の VM Connector 操作のすべてのインスタンスで使用できる VM キューを設定します。 5. [VM キューを定義します](#configure-global-element)​。 6. **\[Listener\]**​ 設定画面で、​**\[Number of consumers (コンシューマー数)\]**​ 項目を目的の値に設定します (デフォルトは ​`4`​)。 7. **\[Queue (キュー)\]**​ セクションで、ドロップダウンメニューから ​**\[Queue name (キュー名)\]**​ を選択します。 以前に VM キューを作成している場合、​**\[Queue name (キュー名)\]**​ 値は自動的に表示されます。 8. **\[Timeout (タイムアウト)\]**​ の値を指定します (デフォルトは ​`5`​)。 9. ドロップダウンメニューから ​**\[Timeout unit (タイムアウト単位)\]**​ を選択します。 ## [](#add-connector-operation)フローにコネクタの操作を追加する フローにコネクタの操作を追加すると、そのコネクタで実行する特定の操作をすぐに定義できます。 VM Connector の操作を追加するには、次の手順に従います。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**\[VM Connector\]**​ を選択し、目的の操作を選択します。 2. その操作を Studio キャンバスの入力元の右にドラッグします。 ## [](#configure-global-element)コネクタのグローバル要素を設定する コネクタを設定する場合、アプリケーション内のそのコネクタのすべてのインスタンスで使用できるグローバル要素を設定することをお勧めします。VM Connector のグローバル設定により、コネクタが操作するキューが定義されます。それぞれ独自のキューのセットが含まれる任意の数の設定を定義できます。 特定の VM Connector 設定内で定義された各キューは、その設定を参照する操作でのみ使用できます。キュー名を複数の設定で繰り返し使用することはできません。また、同じ名前のキューが同じアプリケーションまたはドメイン内に複数存在することもできません。 VM Connector のグローバル要素を設定する手順は、次のとおりです。 1. Studio キャンバスでコネクタの名前を選択します。 2. 操作の設定画面で、​**\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックし、グローバル要素設定項目にアクセスします。 3. **\[General (一般)\]**​ セクションの ​**\[Queues (キュー)\]**​ ドロップダウンメニューで、次のいずれかを選択します。 - `Bean reference` **\[Bean reference (bean 参照)\]**​ 項目で、目的の参照値を追加します。 - `Edit inline` **\[Queues (キュー)\]**​ 項目で、プラス記号 (+) をクリックして新しいキューを追加します。続いて ​**\[Queue name (キュー名)\]**​ 値を追加し、​**\[Queue type (キュー種別)\]**​ を ​`TRANSIENT (Default)`​ または ​`PERSISTENT`​ に設定して、​**\[Max outstanding messages (最大送信メッセージ数)\]**​ の値を追加して、​**\[Finish (完了)\]**​ をクリックします。 1. **\[Connection (接続)\]**​ セクションで、必要に応じて再接続戦略を設定します。 2. **\[Advanced (詳細)\]**​ タブで、必要に応じて有効期限ポリシーを設定します。 3. **\[OK\]**​ をクリックします。 次のスクリーンショットは、VM Connector の設定例を示しています。 ![VM Connector 設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-studio-config1.png) Figure 1. VM Connector 設定 次のスクリーンショットは、VM キューの設定例を示しています。 ![VM キュー設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-studio-config2.png) Figure 2. VM キュー設定 XML エディターでは、VM Connector 設定は次のように記述されます。 ```xml ``` ## [](#view-app-log)アプリケーションログの表示 問題を確認するため、アプリケーションログを次の方法で表示できます。 - アプリケーションを Anypoint Platform から実行している場合、出力は Anypoint Studio のコンソールウィンドウに表示される。 - コマンドラインから Mule を使用してアプリケーションを実行している場合、アプリケーションログは OS コンソールに表示される。 アプリケーションのログファイル (​`log4j2.xml`​) でログファイルパスがカスタマイズされていない場合、デフォルトの場所 ​`MULE_HOME/logs/.log`​ でアプリケーションログを表示することもできます。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Anypoint Studio を使用したコネクタの設定](https://docs.mulesoft.com/connectors/introduction/intro-config-use-studio) - [VM Connector リファレンス](https://docs.mulesoft.com/jp/vm-connector/latest/vm-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector 仮想マシン用 Anypoint Connector (VM Connector) は、一時的または永続的な非同期キューを介してアプリケーション内およびアプリケーション間での通信を管理します。 - 一時的なキューは永続的なキューより高速ですが、システムがクラッシュした場合は信頼できません。 - 永続的なキューは速度は劣りますが、信頼できます。 Mule アプリケーションを単一ランタイムインスタンスモードで実行した場合、永続的なキューはコンテンツをシリアル化してディスクに保存します。ただし、Mule アプリケーションをクラスターランタイムインスタンスモードで実行した場合は、永続的なキューはメモリグリッドにバックアップされます。したがって、フローが VM Connector を使用してコンテンツをキューにパブリッシュする場合、メッセージを同じ発生元ノードで処理するのか、別のノードを選択するためにメッセージをクラスターに送信するのかは、Mule Runtime Engine によって判断されます。VM Connector を使用するとクラスター全体に負荷を分散しやすくなります。 単一またはクラスターのランタイムインスタンスモードで永続的なキューを使用する場合は、送信するデータをシリアル化する必要があります。Kryo シリアル化を有効にして、より広範なシリアル化可能な値を取得できますが、Kryo にはいくつかの制限があります。詳細は、​[「シリアル化を使用する場合の考慮事項」](https://docs.mulesoft.com/mule-runtime/latest/configure-custom-serializers#considerations-when-using-serialization)​ドキュメントを参照してください。 永続的なキューを使用する場合は、次の点に留意してください。 - 構造が複雑すぎると、シリアル化しにくい場合に、シリアル化エラーやパフォーマンス上の問題が発生する可能性があるため、値は単純なものにしてください。 - 複雑な Java オブジェクトでは ​`Serializable`​ インターフェースを実装し、Java Bean コントラクトに準拠してください。 - ストリーム、JSON オブジェクト、マップなどは、関連する値が上記の推奨事項に準拠している場合にのみ使用してください。 永続的なキューは CloudHub 2.0 と Runtime Fabric では使用できません。 ## [](#始める前に)始める前に このコネクタを使用するには、以下に精通している必要があります。 - Anypoint Connector - Mule Runtime Engine (Mule) - Mule フローの要素とグローバル要素 - Anypoint Studio (Studio) を使用した Mule アプリケーションの作成 アプリケーションを作成するには、Anypoint Studio へのアクセスが必要です。 ## [](#コネクタの一般的なユースケース)コネクタの一般的なユースケース VM Connector は次の場合に使用します。 - 直接 ​``​ を使用する代わりに、キューメカニズムを使用してフロー間でメッセージを渡す場合。 - クラスター全体で作業を分散する場合。 - 同じ Mule ドメインで実行中の異なるアプリケーションと通信する場合。 - 完全な JMS ブローカーの使用が妥当でない単純なキューを実行する場合。 例については、​[「例」](https://docs.mulesoft.com/jp/vm-connector/latest/vm-examples)​を参照してください。 ## [](#対象者)対象者 - 新規ユーザー: 以下を参照 - Mule アプリケーションを作成するための​[「Anypoint Studio を使用したコネクタの設定」](https://docs.mulesoft.com/jp/vm-connector/latest/vm-studio-configuration) - [「例」](https://docs.mulesoft.com/jp/vm-connector/latest/vm-examples)​には、コネクタのユースケースが 1 つ以上用意されています。 - 高度なユーザー: 以下を参照 - [XML と Maven のサポート](https://docs.mulesoft.com/jp/vm-connector/latest/vm-xml-maven) - [「例」](https://docs.mulesoft.com/jp/vm-connector/latest/vm-examples)​には、コネクタのユースケースが 1 つ以上用意されています。 ## [](#次のステップ)次のステップ 前提条件を満たし、テンプレートおよびサンプルを試したら、​[Anypoint Studio](https://docs.mulesoft.com/jp/vm-connector/latest/vm-studio-configuration)​ で独自のアプリケーションを作成してコネクタを設定できます。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [Exchange を使用したコネクタ、テンプレート、およびサンプルの検出](https://docs.mulesoft.com/connectors/introduction/intro-use-exchange) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector の XML と Maven のサポート XML で Mule アプリケーションを手動でコーディングすることもできますが、Anypoint Studio を使用した方が効率的です。 Anypoint Studio の XML エディターまたはテキストエディターから Mule Runtime Engine (Mule) アプリケーションを手動でコーディングする場合、参照ステートメントを XML Mule フローと Apache Maven ​`pom.xml`​ ファイルの両方に追加することで、アプリケーションでコネクタにアクセスできます。 コネクタを Studio に追加すると、Studio は自動的に XML コードにコネクタの名前空間およびスキーマの場所を入力します。さらに、​`pom.xml`​ ファイルに連動関係を追加します。 ## [](#コネクタの名前空間の追加)コネクタの名前空間の追加 次のコードを設定 XML のヘッダーの ​``​ タグ内に貼り付けます。 ```xml http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd ``` 次の例は、​``​ XML ブロック内に名前空間ステートメントが配置される方法を示しています。 ```xml ``` ## [](#pom-ファイルの連動関係の追加)POM ファイルの連動関係の追加 Apache Maven ​`pom.xml`​ ファイルは Anypoint Studio によって生成され、Mule アプリケーションの連動関係が含まれます。Mule アプリケーションを手動でコーディングする場合、次の XML スニペットを ​`pom.xml`​ ファイルに含めてこのコネクタにアクセスできるようにします: ```xml org.mule.connectors mule-vm-connector x.x.x mule-plugin ``` `x.x.x`​ を使用しているコネクタに対応するバージョンに置き換えます。 最新の ​`pom.xml`​ ファイル情報を取得する手順は、次のとおりです。 1. [Anypoint Exchange](https://www.mulesoft.com/exchange/)​ に移動します。 2. Exchange で、​**\[Login (ログイン)\]**​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。 3. Exchange で、「​`vm connector`​」を検索します。 4. コネクタを選択します。 5. 画面の右上付近にある ​**\[Dependency Snippets (連動関係スニペット)\]**​ をクリックします。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector のトラブルシューティング 仮想マシン用 Anypoint Connector (VM Connector) のトラブルシューティングを行うには、冗長ログの有効化と、スローされる一般的なメッセージの解釈に関する情報を理解しておきます。 ## [](#冗長ログの有効化)冗長ログの有効化 アプリケーションと VM Connector のやりとりが失敗する理由の理解を深めるには、VM Connector の冗長ログを一時的に有効にします。 Mule アプリケーションのパフォーマンスに影響するため、トラブルシューティングが完了したら、必ず拡張された冗長性を無効にしてください。 設定ファイルで冗長ログを有効にする手順は、次のとおりです。 1. Anypoint Studio にアクセスし、​**\[Package Explorer\]**​ ビューに移動します。 2. アプリケーションのプロジェクト名を開きます。 3. `src/main/resources`​ パスフォルダーを開きます。 4. フォルダー内の ​`log4j2.xml`​ ファイルを開きます。 5. ``​ タグ内に ​``​ タグを追加します。 ```xml ... ... ``` 6. アプリケーションの変更を保存します。 7. **Package Explorer**​ でプロジェクト名をクリックし、​**\[Run (実行)\]**​ > ​**\[Run As (別のユーザーとして実行)\]**​ > ​**\[Mule Application (Mule アプリケーション)\]**​ をクリックします。 ## [](#一般的なスローを理解する)一般的なスローを理解する ここでは、一般的なスローメッセージとその解決方法を示します。 - VM:EMPTY\_QUEUE The referenced queue is empty. (参照されるキューが空です。) - VM:RETRY\_EXHAUSTED 操作の最大再試行回数に達しました。 - VM:CONNECTIVITY 接続が有効ではなくなりました。アプリケーションの設定で定義されている場合、再接続ポリシーを適用してください。 - VM:QUEUE\_TIMEOUT Timeout exceeded waiting for response on a queue. (キューの応答を待機している間にタイムアウトを超えました。) - VM:PUBLISH\_CONSUMER\_FLOW\_ERROR The ​\*Publish consume\*​ operation failed to process the published message. (Publish consume 操作でパブリッシュされたメッセージを処理できませんでした。) ## [](#関連情報)関連情報 - [VM Connector リファレンス](https://docs.mulesoft.com/jp/vm-connector/latest/vm-reference) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) - [Known Issues](https://help.salesforce.com/s/issues) # VM Connector のメッセージのパブリッシュとリスンの例 次の例は、異なるフローによって受信されるメッセージをパブリッシュする方法を示しています。 - 最初のフローでは受信 HTTP メッセージペイロードを受け入れ、​**VM Publish**​ 操作がメッセージを VM キューにパブリッシュします。 - 2 番目のフローでは ​**VM Listener**​ ソースが同じ VM キューを介して前のフローからメッセージペイロードを受信します。 - そのために、両方の操作で同じキューを参照することで、アクティブなリスナーがいないキューにメッセージを送信することによって引き起こされるメッセージの損失を防ぎます。 次のスクリーンショットは、この例の Anypoint Studio アプリケーションフローを示しています。 ![VM Connector のメッセージのパブリッシュとリスン](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-publishlisten.png) Figure 1. VM Connector のメッセージのパブリッシュとリスン ## [](#vm-パブリッシュフローを作成する)VM パブリッシュフローを作成する VM パブリッシュフローは最初に受信 HTTP メッセージペイロードをリスンします。このメッセージペイロードには JSON オブジェクトの本文属性が含まれます。次に、一方向の ​**VM Publish**​ 操作で、メッセージが VM キューでパブリッシュされ、フローが続行されます。 VM パブリッシュフローを作成する手順は、次のとおりです。 1. Studio で新しい Mule プロジェクトを作成します。 2. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**HTTP Listener**​ ソースを選択してキャンバスにドラッグします。 このソースは受信 HTTP メッセージ属性をリスンします。 3. **\[HTTP Listener\]**​ 設定画面で、​**\[Path (パス)\]**​ 項目を ​`/json-here`​ に設定します。 4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の ​**HTTP リスナー**​のすべてのインスタンスで使用できるグローバル要素を設定します。 5. **\[Connection (接続)\]**​ セクションで、次の値を入力します。 - **Protocol (プロトコル)**​ `HTTP (デフォルト)` - **Host (ホスト)**​ `All Interfaces [0.0.0.0] (default)` - **Port (ポート)**​ `8081` 6. **\[Test Connection (接続をテスト)\]**​ をクリックして、Mule が指定されたサーバーに接続できることを確認します。 7. **\[OK\]**​ をクリックします。 8. **VM Publish**​ 操作を ​**HTTP Listener**​ ソースの右にドラッグします。 この操作は、メッセージペイロードを VM キューでパブリッシュします。 9. コネクタ設定の ​**\[Content (コンテンツ)\]**​ 項目で、値を ​`payload.body`​ に設定します。 この項目により、DataWeave を使用して送信する値を作成できます。パラメーター値を指定しない場合は、ペイロード全体が送信されます。 10. **\[VM Publish\]**​ 設定画面で、​**\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、VM キューのグローバル要素を設定します。 11. **\[VM Config (VM 設定)\]**​ ウィンドウで、​**\[Queues (キュー)\]**​ に ​**\[Edit inline (インライン編集)\]**​ を選択します。 12. **\[Queue (キュー)\]**​ ウィンドウで、次の値を入力します。 - **Queue name (キュー名)**​ `myQueue` - **Queue type (キュー種別)**​ `TRANSIENT (デフォルト)` - **Max outstanding message (最大送信メッセージ数)**​ ​`o` 13. **\[Finish (完了)\]**​ をクリックします。 14. **\[OK\]**​ をクリックします。 次のスクリーンショットは、​**\[VM Config (VM 設定)\]**​ のグローバル要素設定を示しています。 ![「VM Config (VM 設定)」 のグローバル要素設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-publishlisten2.png) Figure 2. \[VM Config (VM 設定)\] のグローバル要素設定 次のスクリーンショットは、​**VM Publish**​ 操作の画面設定を示しています。 ![VM Publish 操作設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-publishlisten3.png) Figure 3. VM Publish 操作設定 ## [](#vm-リスンフローを作成する)VM リスンフローを作成する VM リスンフローは前の VM Publish フローからの VM キューのメッセージペイロードをリスンし、メッセージを記録します。このフローにはメッセージソースとして ​**VM Listener**​ が含まれ、​**VM Publish**​ 操作で設定したのと同じ VM キューを参照します。リスンする側の処理は非同期で発生します。その結果についての通知は受信しません。 VM リスンフローを作成する手順は、次のとおりです。 1. **\[Mule Palette (Mule パレット)\]**​ ビューで、​**VM Listener**​ ソースを選択してキャンバスの最初の VM パブリッシュフローの下にドラッグします。 このソースは前のフローから受信したメッセージペイロードをリスンします。 2. **\[VM Listener\]**​ 設定画面で、​**\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、VM パブリッシュフローで作成した VM キュー設定を選択します。 3. **Logger**​ コンポーネントを ​**VM Listener**​ ソースの右にドラッグします。 4. プロジェクトを保存して、アプリケーションを実行します。 5. 要求を ​`http://127.0.0.1:8081/json-here`​ に送信してアプリケーションをテストします。 次のスクリーンショットは、​**VM Listener**​ ソースの画面設定を示しています。 ![VM Listen ソース設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-publishlisten4.png) Figure 4. VM Listen ソース設定 ## [](#メッセージのパブリッシュとリスンの-xml)メッセージのパブリッシュとリスンの XML この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector のメッセージのパブリッシュと応答の取得の例 ときには、応答を取得したほうがよい場合があります。その場合は ​`publish-consume`​ 操作を使用して、相手側でメッセージが処理されるのを待機し、応答を提供します。この操作は、それ以外の点では、​`publish`​ とまったく同じです。 [パブリッシュおよびリスンの例](https://docs.mulesoft.com/jp/vm-connector/latest/vm-publish-listen)​を基にして、応答を送信するとします。例を次のように変更できます。 ```xml #[payload.body] ``` 次の例では、応答を作成する DataWeave 式が ​``​ ソースによって埋め込まれています。 次に示す ​`body`​ および ​`origin`​ 値を使用する単純な形式のように、定義済みの JSON 形式の応答が必要だとします。 ```xml ``` ## [](#エラー処理)エラー処理 受信フローが失敗すると、この操作は ​`VM:PUBLISH_CONSUMER_FLOW_ERROR`​ エラーを発生させます。このエラーの説明は、フローが発生させた元のエラーのものになります。 さらに、受信フローが予期された時間内で応答しない場合は、​`VM:QUEUE_TIMEOUT`​ も発生する場合があります。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector のメッセージ属性の伝播の例 次の例では、メッセージペイロードを介して VM キューからメッセージ属性を伝播する方法を示しています。最初のフローでは受信 HTTP メッセージ属性を受け入れ、さらに独自のカスタム属性を作成して、これらの両方の属性をメッセージペイロードに追加しているため、​**VM Publish**​ 操作でメッセージを VM キューにパブリッシュできます。2 番目のフローでは ​**VM Listener**​ ソースが前のフローからメッセージペイロードを受信し、独自のメッセージ属性を設定して、最後にメッセージペイロードがオブジェクトストアに保存されています。 次のスクリーンショットは、この例の Anypoint Studio アプリケーションフローを示しています。 ![VM Connector のフロー例](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-messageflow.png) Figure 1. VM Connector のメッセージ属性の伝播フロー ## [](#vm-パブリッシュフローを作成する)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`​ 属性を定義します。 ```DataWeave %dw 2.0 output application/json --- { listenerPath: attributes.listenerPath, method: attributes.method } ``` 1. **Transform Message**​ コンポーネントの ​**\[Output Attributes (出力属性)\]**​ スクリプトビューで、次の DataWeave コードを使用して新しいカスタム ​`sizeAttribute`​ 属性を定義します。 ```DataWeave %dw 2.0 output application/json --- { sizeAttribute: sizeOf(attributes.listenerPath) + sizeOf(attributes.method) } ``` 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 設定)」 のグローバル要素設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-publish2.png) Figure 2. \[VM Config (VM 設定)\] のグローバル要素設定 1. **\[VM Publish\]**​ 設定画面の ​**\[General (一般)\] > \[Content (コンテンツ)\]**​ 項目で、次の DataWeave コードを定義します。 ```DataWeave %dw 2.0 output application/json --- {'listenerPath': payload.listenerPath, 'method': payload.method, 'messageSize': attributes.sizeAttribute } ``` Studio での ​**VM Publish**​ 操作設定は次のようになります。 ![VM Publish 操作設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-publish1.png) Figure 3. VM Publish 操作設定 ## [](#vm-リスンフローを作成する)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 ソース設定](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-example-listener.png) 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)VM キューを通じたメッセージ属性の伝播の XML この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector の例 仮想マシン用 Anypoint Connector (VM Connector) を最大限活用するには、次のコネクタ操作の設定例を参照してください。 - [動的ルーティング](https://docs.mulesoft.com/jp/vm-connector/latest/vm-dynamic-routing) 特定の条件に応じて異なるキューにメッセージを動的にルーティングするように ​**Publish**​ 操作を設定します。 - [メッセージ属性の伝播](https://docs.mulesoft.com/jp/vm-connector/latest/vm-propagate-messages) メッセージペイロードを介して VM キューからメッセージ属性を伝播するように ​**Publish**​ 操作と ​**Listener**​ ソースの両方を設定します。 - [異なるアプリケーション間でのメッセージの送信](https://docs.mulesoft.com/jp/vm-connector/latest/vm-publish-across-apps) 異なるアプリケーション間でメッセージを送信するように ​**Publish**​ 操作、​**VM Listener**​ 操作、​**Consume**​ 操作を設定します。 - [メッセージのパブリッシュとリスン](https://docs.mulesoft.com/jp/vm-connector/latest/vm-publish-listen) 異なるフローによって受信されたメッセージをパブリッシュするように ​**Publish**​ 操作と ​**Listener**​ ソースを設定します。 - [メッセージのパブリッシュと応答の取得](https://docs.mulesoft.com/jp/vm-connector/latest/vm-publish-response) メッセージをパブリッシュして応答を取得するように ​**Publish consume**​ 操作を設定します。 - [キューで保留中のメッセージの集約](https://docs.mulesoft.com/jp/vm-connector/latest/vm-aggregate-messages) VM ​**Publish**​、​**Consume**​、および Aggregators Module を設定して、キュー内で保留中のメッセージを集約します。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector の動的ルーティングの例 式を使用して、特定の条件に応じて異なるキューにメッセージを送信する汎用フローを作成できます。たとえば、​`queueName`​ 属性でも式を使用して、​[パブリッシュおよびリスンの例](https://docs.mulesoft.com/jp/vm-connector/latest/vm-publish-listen)​をより興味深いものにすることができます。 たとえば、HTTP Connector を使用して取得する JSON オブジェクトに、書き込む必要があるキューの名前に直接マップする宛先オブジェクトが含まれている場合、次のようにできます。 ```xml #[payload.body] ``` # VM Connector の異なるアプリケーション間でのメッセージの送信の例 以下の例は、異なるアプリケーション間でメッセージを送信する 2 つの方法を示しています。 - リスナーを使用して最初のアプリケーションからメッセージを受信し、Publish 操作を使用して受信したメッセージを 2 番目のアプリケーションに提供します。 - 2 番目のアプリケーションで Publish 操作を使用してメッセージキューにメッセージをプッシュし、Consume 操作を使用してメッセージをコンシュームします。 どちらの場合でも、2 つのアプリケーションが同じドメインに存在している必要があります。 ## [](#2-番目のアプリケーションにメッセージをパブリッシュする)2 番目のアプリケーションにメッセージをパブリッシュする 1. 次のように、ドメインに VM 設定を作成します。 ```xml ``` 2. 同じドメインのアプリケーションにリスナーを配置します。 ```xml ``` 3. 同じドメインの 2 番目のアプリケーションからメッセージをパブリッシュします。 ```xml ``` この例では、Listener および Publish 操作で同じキュー (​`sharedQueue`​) と同じ設定 (​`sharedVMConfig`​) を参照しています。 ## [](#パブリッシュされたメッセージをキューから取得する)パブリッシュされたメッセージをキューから取得する ``​ メッセージソースを使用する代わりに、​``​ 操作を使用して VM キューにあるメッセージをコンシュームできます。この操作では、メッセージをオンデマンドでコンシュームし、次のことが可能です。 - 特定の条件に応じて異なるキューから動的にコンシュームする。 - アプリケーションがメッセージをコンシュームするリズムをより厳しく制御する。 キューのパブリッシュされたメッセージをコンシュームする手順は、次のとおりです。 1. 次のように、ドメインに VM 設定を作成します。 ```xml ``` 2. 同じドメインの 2 番目のアプリケーションからメッセージをパブリッシュします。 ```xml ``` 3. メッセージがパブリッシュされたら、キューからメッセージを取得します。 ```xml ``` この例では、Publish および Consume 操作で同じキュー (​`sharedQueue`​) と同じ設定 (​`sharedVMConfig`​) を参照しています。 ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector リファレンス VM Connector v2.0 仮想マシン (VM) 用 Anypoint Connector (VM Connector) は、一時的または永続的な非同期キューを介してアプリケーション内およびアプリケーション間で通信を行います。一時的なキューのほうが高速ですが、システムがクラッシュした場合は永続的なキューよりも信頼性が劣ります。それに対して、永続的なキューは速度は劣りますが、信頼できます。 単一インスタンスで実行すると、永続的なキューはコンテンツをシリアル化してディスクに保存します。クラスターモードで実行すると、永続的なキューは代わりにメモリグリッドによってバッキングされます。つまり、Mule フローが VM Connector を使用してコンテンツをキューにパブリッシュする場合、そのメッセージを同じ発生元ノードで処理するのか、別のノードが取得して処理するようにクラスターに送信するのかは、Mule Runtime Engine (Mule) によって判断されます。これは、クラスター全体で負荷を分散する簡単な方法であり、トランザクションが常にサポートされることが保証されます。 各設定では独自のキューセットを定義し、それぞれのキューセットは、設定を参照するコンポーネントにのみ表示されます。 リリースノート: [VM Connector リリースノート](https://docs.mulesoft.com/jp/release-notes/connector/connector-vm) ## [](#設定)設定 * * * ### [](#config)デフォルト設定 デフォルト設定用のパラメーターは次のとおりです。 #### [](#パラメーター)パラメーター
名前 型 説明 デフォルト値 必須

Name (名前)

String (文字列)

この設定の名前。コネクタはこの名前の設定を参照します。

x

Connection (接続)

この設定に指定できる接続種別。

x

Queues

Queue (キュー)​ の配列

この設定が所有するキュー。

x

#### [](#接続種別)接続種別 ##### [](#config_connection)Connection (接続) VMConnection のインスタンスを返します。 ###### [](#パラメーター-2)パラメーター
名前 型 説明 デフォルト値 必須

Reconnection (再接続)

アプリケーションがデプロイされると、すべてのコネクタで接続テストが実行されます。​true​ に設定されている場合、関連する再接続戦略をすべて実行した後にテストに合格しないと、デプロイメントが失敗します。

## [](#関連操作)関連操作 - [Consume](#consume) - [Publish](#publish) - [Publish Consume](#publishConsume) ## [](#関連付けられたソース)関連付けられたソース - [リスナー](#listener) ## [](#操作)操作 ### [](#consume)Consume `` この操作は、キューからメッセージを取得します。メッセージがすぐに取得されない場合、Consume 操作は設定された ​`queueTimeout`​ 値まで待機し、それを過ぎると ​`VM:QUEUE_TIMEOUT`​ エラーがスローされます。 コンテンツをコンシュームするフローにリスナー (​``​) ソースを含めることはできません。 #### [](#パラメーター-3)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Transactional Action (トランザクションアクション)

Enumeration (列挙)。次のいずれかになります。

  • ALWAYS_JOIN​: 現在の操作は、現在のトランザクションに結合されます。トランザクションが存在しないか、操作との互換性がない場合、実行は失敗します。

  • JOIN_IF_POSSIBLE​: 現在の操作は、使用可能なトランザクションに結合されます。結合するトランザクションがない場合、現在の操作は既存のトランザクション外で実行されます。

  • NOT_SUPPORTED​: 現在の操作は、既存のトランザクション外で実行されます。

トランザクションに関する操作で実行できる結合アクションの種別。

JOIN_IF_POSSIBLE

Queue Name (キュー名)

String (文字列)

キューの名前。

x

Timeout (タイムアウト)

Number (数値)

タイムアウトエラーで失敗するまでに、キューが (パブリッシュまたはコンシュームのいずれかの) 操作の完了を待機する時間。デフォルト値は 5 秒です。

5

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

#timeoutUnit に使用できる時間単位

SECONDS

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価される式。この式の結果は対象変数に保存されます。

#[payload]

Reconnection Strategy (再接続戦略)

接続エラーが発生した場合の再試行戦略。

#### [](#出力)出力

型

Any (任意)

Attributes Type (属性型)

#### [](#次の設定の場合)次の設定の場合 - [デフォルト設定](#config) #### [](#スロー)スロー - VM:EMPTY\_QUEUE - VM:RETRY\_EXHAUSTED - VM:CONNECTIVITY ### [](#publish)Publish `` この操作は、指定されたコンテンツを指定されたキュー名のキューにパブリッシュします。 #### [](#パラメーター-4)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Content (コンテンツ)

Any (任意)

パブリッシュされるコンテンツ。

#[payload]

Transactional Action (トランザクションアクション)

Enumeration (列挙)。次のいずれかになります。

  • ALWAYS_JOIN​: 現在の操作は、現在のトランザクションに結合されます。トランザクションが存在しないか、操作との互換性がない場合、実行は失敗します。

  • JOIN_IF_POSSIBLE​: 現在の操作は、使用可能なトランザクションに結合されます。結合するトランザクションがない場合、現在の操作は既存のトランザクション外で実行されます。

  • NOT_SUPPORTED​: 現在の操作は、既存のトランザクション外で実行されます。

トランザクションに関する操作で実行できる結合アクションの種別。

JOIN_IF_POSSIBLE

Queue Name (キュー名)

String (文字列)

キューの名前。

x

Timeout (タイムアウト)

Number (数値)

タイムアウトエラーで失敗するまでに、キューが (パブリッシュまたはコンシュームのいずれかの) 操作の完了を待機する時間。デフォルト値は 5 秒です。

5

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

#timeoutUnit に使用できる時間単位。

SECONDS

Reconnection Strategy (再接続戦略)

接続エラーが発生した場合の再試行戦略。

#### [](#次の設定の場合-2)次の設定の場合 - [デフォルト設定](#config) #### [](#スロー-2)スロー - VM:RETRY\_EXHAUSTED - VM:QUEUE\_TIMEOUT - VM:CONNECTIVITY ### [](#publishConsume)Publish Consume `` この操作は、指定されたコンテンツをキューにパブリッシュした後、この操作で自動作成される一時的な応答先キューに応答が提供されるのを ​`queueTimeout`​ で設定された時間まで待機します。 一時的な応答キューは、応答が受信されるか、タイムアウトの期限が切れた後に自動的に破棄されます。 コンテンツをパブリッシュするフローに Listener (​``​) ソースを含めることはできません。 #### [](#パラメーター-5)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Content (コンテンツ)

Any (任意)

パブリッシュされるコンテンツ。

#[payload]

Transactional Action (トランザクションアクション)

Enumeration (列挙)。次のいずれかになります。

  • ALWAYS_JOIN​: 現在の操作は、現在のトランザクションに結合されます。トランザクションが存在しないか、操作との互換性がない場合、実行は失敗します。

  • JOIN_IF_POSSIBLE​: 現在の操作は、使用可能なトランザクションに結合されます。結合するトランザクションがない場合、現在の操作は既存のトランザクション外で実行されます。

  • NOT_SUPPORTED​: 現在の操作は、既存のトランザクション外で実行されます。

トランザクションに関する操作で実行できる結合アクションの種別。

JOIN_IF_POSSIBLE

Queue Name (キュー名)

String (文字列)

キューの名前。

x

Timeout (タイムアウト)

Number (数値)

タイムアウトエラーで失敗するまでに、キューが (パブリッシュまたはコンシュームのいずれかの) 操作の完了を待機する時間。デフォルト値は 5 秒です。

5

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

#timeoutUnit に使用できる時間単位

SECONDS

Target Variable (対象変数)

String (文字列)

操作の出力が配置される変数の名前。

Target Value (対象値)

String (文字列)

操作の出力に対して評価する式。その式の結果は対象変数に保存されます。

#[payload]

Reconnection Strategy (再接続戦略)

接続エラーが発生した場合の再試行戦略。

#### [](#出力-2)出力

型

Any (任意)

Attributes Type (属性型)

#### [](#次の設定の場合-3)次の設定の場合 - [デフォルト設定](#config) #### [](#スロー-3)スロー - VM:RETRY\_EXHAUSTED - VM:QUEUE\_TIMEOUT - VM:CONNECTIVITY ## [](#ソース)ソース ### [](#listener)リスナー `` VM キューを作成してリスンするソース。VM キューは、Listener を VM キューに配置することで作成されます。そのため、この Listener にはキューの動作 (永続的か否か、最大容量など) のパラメーターが含まれます。 #### [](#パラメーター-6)パラメーター
名前 型 説明 デフォルト値 必須

Configuration (設定)

String (文字列)

使用する設定の名前。

x

Number Of Consumers (コンシューマーの数)

Number (数値)

キューに配置される同時コンシューマーの数。コンシューマーの数が増えると、このソースが所有フローにメッセージをプッシュする速度も上がります。デフォルトの同時コンシューマー数は 4 個です。

4

Transactional Action (トランザクションアクション)

Enumeration (列挙)。次のいずれかになります。

  • ALWAYS_BEGIN​

  • None (なし)

ソースがトランザクションに関して実行できる開始アクションの種別。

None (なし)

Transaction Type (トランザクション種別)

Enumeration (列挙)。次のいずれかになります。

  • LOCAL

  • XA

作成するトランザクションの種別。使用できるかどうかは、Mule バージョンによって決まります。

LOCAL

Redelivery Policy (再配信ポリシー)

メッセージの再配信を処理するためのポリシー。

Queue Name (キュー名)

String (文字列)

キューの名前。

x

Timeout (タイムアウト)

Number (数値)

タイムアウトエラーで失敗するまでに、キューが (パブリッシュまたはコンシュームのいずれかの) 操作の完了を待機する時間。デフォルト値は 5 秒です。

5

Timeout Unit (タイムアウト単位)

Enumeration (列挙)。次のいずれかになります。

  • NANOSECONDS (ナノ秒)

  • MICROSECONDS (マイクロ秒)

  • MILLISECONDS (ミリ秒)

  • SECONDS (秒)

  • MINUTES (分)

  • HOURS (時間)

  • DAYS (日)

#timeoutUnit に使用できる時間単位

SECONDS

Reconnection Strategy (再接続戦略)

接続エラーが発生した場合の再試行戦略。

Content (コンテンツ)

Any (任意)

#[payload]

#### [](#出力-3)出力

型

Any (任意)

Attributes Type (属性型)

#### [](#次の設定の場合-4)次の設定の場合 - [デフォルト設定](#config) ## [](#型)型 ### [](#Reconnection)Reconnection (再接続)
項目 型 説明 デフォルト値 必須

Fails Deployment (デプロイメントに失敗)

Boolean (ブール)

アプリケーションがデプロイされると、すべてのコネクタで接続テストが実行されます。​true​ に設定されている場合、関連する再接続戦略をすべて実行した後にテストに合格しないと、デプロイメントが失敗します。

Reconnection Strategy (再接続戦略)

使用する再接続戦略。

### [](#reconnect)Reconnect (再接続)
項目 型 説明 デフォルト値 必須

Frequency (頻度)

Number (数値)

再接続する頻度 (ミリ秒)。

Count (数)

Number (数値)

再接続の試行回数。

blocking (ブロック)

Boolean (ブール)

false​ の場合、再接続戦略が個別の非ブロックスレッドで実行されます。

true

### [](#reconnect-forever)Reconnect Forever (繰り返し再接続)
項目 型 説明 デフォルト値 必須

Frequency (頻度)

Number (数値)

再接続する頻度 (ミリ秒)。

blocking (ブロック)

Boolean (ブール)

false​ の場合、再接続戦略が個別の非ブロックスレッドで実行されます。

true

### [](#queue)Queue (キュー)
項目 型 説明 デフォルト値 必須

Queue Name (キュー名)

String (文字列)

キューの名前。

x

Queue Type (キューの種類)

Enumeration (列挙)。次のいずれかになります。

  • TRANSIENT

  • PERSISTENT

このストアが永続的か、一時的かを指定します。

TRANSIENT

Max Outstanding Messages (最大送信メッセージ数)

Number (数値)

ブロックが開始されるまでにキューに登録できるメッセージ数を指定します。値が ​0​ の場合は、ブロックは直ちに開始されます。

0

### [](#VMMessageAttributes)VM Message Attributes (VM メッセージ属性)
項目 型 説明 デフォルト値 必須

Queue Name (キュー名)

String (文字列)

コンテンツの取得元のキューの名前。

Timestamp (タイムスタンプ)

DateTime

コンテンツが取得された時刻。

### [](#RedeliveryPolicy)Redelivery Policy (再配信ポリシー)
項目 型 説明 デフォルト値 必須

Max Redelivery Count (最大再配信数)

Number (数値)

正常に処理されずにプロセス失敗メッセージがトリガーされるまでにメッセージを再配信できる最大回数。

Use Secure Hash (セキュアハッシュを使用)

Boolean (ブール)

再配信されたメッセージの識別にセキュアハッシュアルゴリズムを使用するかどうか。

Message Digest Algorithm (メッセージダイジェストアルゴリズム)

String (文字列)

使用するセキュアハッシュアルゴリズム。設定しない場合、デフォルトの SHA-256 になります。

Id Expression (ID 式)

String (文字列)

メッセージがいつ再配信されたのかを判断するために使用する 1 つ以上の式を定義します。このプロパティは、useSecureHash が ​false​ の場合にのみ設定できます。

Object Store (オブジェクトストア)

ObjectStore

各メッセージの再配信カウンターが保存されるオブジェクトストア。

## [](#関連情報)関連情報 [MuleSoft ヘルプセンター](https://help.mulesoft.com) # VM Connector を使用したキュー内保留メッセージの集約の例 次の例は、仮想マシン用 Anypoint Connector (VM Connector) を使用して、キューで保留中のメッセージを集約する方法についての 2 つのシナリオを示しています。 VM はキューであり、キュー内で保留中のすべてのメッセージに対して for each 操作を実行することはできません。 ## [](#キュー内メッセージ集計の最初の例)キュー内メッセージ集計の最初の例 この例では、Aggregators Module を使用して、VM ​**Listener**​ 操作によって受信されたメッセージを集約し、集約の結果を反復処理します。 ![Anypoint Studio キャンバスのキュー内保留メッセージの集約の最初のフロー](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-aggregate-flow-1.png) ### [](#最初のフローの作成)最初のフローの作成 最初のフローでは、HTTP ​**\[Listener\]**​ ソースが受信 HTTP メッセージをリスンします。次に、VM ​**Publish**​ 操作が VM キュー内の特定のコンテンツをパブリッシュします。 1. Studio で、新しい Mule プロジェクトを作成します。 2. **\[Mule Palette (Mule パレット)\]**​ で、​**\[HTTP\] > \[Listener\]**​ ソースを選択してキャンバスにドラッグします。 3. HTTP ​**\[Listener\]**​ 設定画面で、​**\[Path (パス)\]**​ 項目を ​`/`​ に設定します。 4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の HTTP ​**Listener**​ のすべてのインスタンスで使用できるグローバル要素を設定します。 5. HTTP グローバル設定の必須項目を入力します。 6. **\[OK\]**​ をクリックします。 7. **\[For Each\]**​ コンポーネントを HTTP の ​**\[Listener\]**​ ソースの右にドラッグします。 8. **\[Collection (コレクション)\]**​ を ​`1 to 200`​ に設定します。 9. **\[VM\] > \[Publish\]**​ 操作を ​**\[For Each\]**​ コンポーネントにドラッグします。 10. **\[Content (コンテンツ)\]**​ を ​`"hello world"`​ に設定します。 11. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の VM ​**Publish**​ 操作のすべてのインスタンスで使用できるグローバル要素を設定します。 12. **\[VM Config (VM 設定)\]**​ ウィンドウで、プラス記号 (+) をクリックして新しいキューを追加します。 13. **\[Queue name (キュー名)\]**​ を ​`demo`​ に設定します。 14. **\[Finish (完了)\]**​ をクリックします。 15. **\[OK\]**​ をクリックします。 ### [](#2-つ目のフローの作成)2 つ目のフローの作成 2 番目のフローでは VM ​**\[Listener\]**​ 操作が VM キューにパブリッシュされたメッセージをリスンします。​**\[Time based aggregator (時間ベースのアグリゲーター)\]**​ スコープを使用すると、時間条件を満たすまで受信したメッセージを集約することができます。 1. Studio で ​**\[VM\] > \[Listener\]**​ 操作を最初のフローの下にドラッグします。 2. **\[Connector configuration (コネクタ設定)\]**​ で、前に作成した ​`VM_Config`​ 設定を選択します。 3. **\[Queue name (キュー名)\]**​ を ​`demo`​ に設定します。 4. **\[Time based aggregator (時間ベースのアグリゲーター)\]**​ スコープを ​**\[VM Listener\]**​ の右にドラッグします。 5. **\[Name (名前)\]**​ を ​`demoaggregator`​ に設定します。 6. **\[Period (期間)\]**​ を ​`5`​ に設定して、5 秒間に達するまで受信メッセージを集約します。 ### [](#3-つ目のフローを作成する)3 つ目のフローを作成する このフローでは、​**\[Aggregator listener\]**​ 操作は ​**\[Time based aggregator (時間ベースのアグリゲーター)\]**​ スコープによって集約されたメッセージをリスンします。​**\[For Each\]**​ コンポーネントはメッセージを反復処理し、​**\[Logger\]**​ コンポーネントは各メッセージのコンテンツを記録します。 1. Studio で、​**\[Aggregator listener\]**​ ソースを 2 番目のフローの上にドラッグします。 2. **\[Aggregator name (アグリゲーター名)\]**​ を ​`demoaggregator`​ に設定します。 3. **\[For Each\]**​ コンポーネントを ​**\[Aggregator listener\]**​ ソースの右にドラッグします。 4. **\[Collection (コレクション)\]**​ を ​`[#payload]`​ に設定します。 5. **\[Logger\]**​ コンポーネントを ​**\[For Each\]**​ コンポーネントにドラッグします。 6. **\[Message (メッセージ)\]**​ を ​`[#payload]`​ に設定します。 7. Mule アプリケーションを保存して実行します。 8. ターミナルで、curl コマンド ​`curl [http://localhost:8081/](http://localhost:8081/)`​ を実行します。 ### [](#キュー内メッセージ集約の最初の例の-xml)キュー内メッセージ集約の最初の例の XML この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ## [](#キュー内メッセージ集計の-2-番目の例)キュー内メッセージ集計の 2 番目の例 この例では、​**\[For Each\]**​ コンポーネントは VM ​**\[Consume\]**​ 操作によってコンシュームされたメッセージを反復処理します。Mule アプリケーションは受信したすべてのメッセージを変数に追加し、各メッセージのペイロードコンテンツを記録します。この例のシナリオではキューにメッセージがなくなるまでメッセージを取得します。キューにメッセージがなくなると、VM ​**\[Consume\]**​ 操作はタイムアウトメッセージをスローし、メッセージは ​**\[On Error Continue\]**​ コンポーネントで処理され、結果が使用可能になります。 ![Anypoint Studio キャンバスのキュー内保留メッセージの集約の 2 番目のフロー](/mulesoft/current/ja-jp/vm-connector/latest/_images/vm-aggregate-flow-2.png) ### [](#最初のフローの作成-2)最初のフローの作成 最初のフローでは ​**\[HTTP Listener\]**​ ソースが受信 HTTP メッセージをリスンし、VM ​**\[Publish\]**​ 操作が VM キューに特定のコンテンツをパブリッシュします。 1. Studio で、新しい Mule プロジェクトを作成します。 2. **\[Mule Palette (Mule パレット)\]**​ で、​**\[HTTP\] > \[Listener\]**​ ソースを選択してキャンバスにドラッグします。 3. HTTP ​**\[Listener\]**​ 設定画面で、​**\[Path (パス)\]**​ 項目を ​`/`​ に設定します。 4. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の HTTP ​**Listener**​ のすべてのインスタンスで使用できるグローバル要素を設定します。 5. HTTP グローバル設定の必須項目を入力します。 6. **\[OK\]**​ をクリックします。 7. **\[For Each\]**​ コンポーネントを HTTP の ​**\[Listener\]**​ ソースの右にドラッグします。 8. **\[Collection (コレクション)\]**​ を ​`1 to 55`​ に設定します。 9. **\[VM\] > \[Publish\]**​ 操作を ​**\[For Each\]**​ コンポーネントにドラッグします。 10. **\[Content (コンテンツ)\]**​ を ​`"test world"`​ に設定します。 11. **\[Connector configuration (コネクタ設定)\]**​ 項目の横にあるプラス記号 (+) をクリックして、アプリケーション内の VM ​**Publish**​ 操作のすべてのインスタンスで使用できるグローバル要素を設定します。 12. **\[VM Config (VM 設定)\]**​ ウィンドウで、プラス記号 (+) をクリックして新しいキューを追加します。 13. **\[Queue name (キュー名)\]**​ を ​`demo`​ に設定します。 14. **\[Finish (完了)\]**​ をクリックします。 15. **\[OK\]**​ をクリックします。 ### [](#2-つ目のフローの作成-2)2 つ目のフローの作成 2 番目のフローでは VM ​**\[Consume\]**​ 操作がキューからパブリッシュされたメッセージを取得します。​**\[Transform Message\]**​ コンポーネントは、ペイロードコンテンツ変換し、変数に保存します。Mule アプリケーションは各変数ペイロードを記録します。 1. Studio で ​**\[Scheduler\]**​ ソースを最初のフローの下にドラッグします。 2. **\[Frequency (頻度)\]**​ を ​`5000`​ に設定します。 3. **\[Set Variable\]**​ コンポーネントを ​**\[Scheduler\]**​ コンポーネントの右にドラッグします。 4. **\[Name (名前)\]**​ を ​`result`​ に設定します。 5. **\[Value (値)\]**​ を ​`[]`​ に設定します。 6. **\[Try\]**​ スコープコンポーネントを ​**\[Set Variable\]**​ の右にドラッグします。 7. **\[For Each\]**​ コンポーネントを ​**\[Try\]**​ スコープにドラッグします。 8. **\[Collection (コレクション)\]**​ を ​`1 to 10000`​ に設定します。 9. VM ​**\[Consume\]**​ 操作を ​**\[For Each\]**​ コンポーネントにドラッグします。 10. **\[Connector configuration (コネクタ設定)\]**​ で、前に作成した ​`VM_Config`​ 設定を選択します。 11. **\[Queue name (キュー名)\]**​ を ​`demo`​ に設定します。 12. **\[Transform Message\]**​ コンポーネントを ​**\[Consume\]**​ の右にドラッグします。 13. DataWeave スクリプトを次のように設定します。 %dw 2.0 output application/java --- vars.result << payload 1. **\[On Error Continue\]**​ コンポーネントを ​**\[Try\]**​ スコープコンポーネントの ​**\[Error handling (エラー処理)\]**​ セクションにドラッグします。 2. **\[Type (種別)\]**​ を ​`VM:EMPTY_QUEUE`​ に設定します。 3. **\[Set Payload\]**​ コンポーネントを ​**\[Try\]**​ スコープコンポーネントの右にドラッグします。 4. **\[Value (値)\]**​ を ​`vars.result`​ に設定します。 5. **\[For Each\]**​ コンポーネントを ​**\[Set Payload\]**​ コンポーネントの右にドラッグします。 6. **\[Collection (コレクション)\]**​ を ​`payload`​ に設定します。 7. **\[Logger\]**​ コンポーネントを ​**\[For Each\]**​ スコープコンポーネントにドラッグします。 8. **\[Message (メッセージ)\]**​ を ​`payload`​ に設定します。 9. Mule アプリケーションを保存して実行します。 10. ターミナルで、curl コマンド ​`curl [http://localhost:8081/](http://localhost:8081/)`​ を実行します。 ### [](#キュー内メッセージ集約の-2-番目の例の-xml)キュー内メッセージ集約の 2 番目の例の XML この例のフローをすばやく Mule アプリケーションに読み込むには、次のコードを Studio XML エディターに貼り付けます。 ```xml ``` ## [](#関連情報)関連情報 - [Anypoint Connector の概要](https://docs.mulesoft.com/connectors/introduction/introduction-to-anypoint-connectors) - [MuleSoft ヘルプセンター](https://help.mulesoft.com)