VM コネクタ - Mule 4

サポートカテゴリ: 選択

VM コネクタ v2.0

仮想マシン (VM) 用 Anypoint コネクタ (VM コネクタ) は、一時的または永続的な非同期キューを介してアプリケーション内およびアプリケーション間で通信を行います。

  • 一時的なキューは永続的なキューより高速ですが、システムがクラッシュした場合は信頼できません。

  • 永続的なキューは速度は劣りますが、信頼できます。

単一インスタンスで実行すると、永続的なキューはコンテンツをシリアル化してディスクに保存します。

クラスタモードで実行すると、永続的なキューはメモリグリッドによってバッキングされます。つまり、フローが VM コネクタを使用してコンテンツをキューにパブリッシュする場合、メッセージを同じ発生元ノードで処理するのか、別のノードによって取得されるようクラスタに送信するのかは、Mule Runtime によって判断されます。VM モジュールを使用するとクラスタ全体に負荷を分散しやすくなります。

どちらの方法でも、トランザクションは常にサポートされます。

リリースノート: ​VM Connector Release Notes - Mule 4
Exchange: VM コネクタ

POM ファイル情報

<dependency>
  <groupId>org.mule.connectors</groupId>
  <artifactId>mule-vm-connector</artifactId>
  <version>RELEASE</version>
  <classifier>mule-plugin</classifier>
</dependency>

Mule は、RELEASE を現在のバージョンに変換します。バージョンを指定するには、Anypoint Exchange を参照して [Dependency Snippets (連動関係スニペット)]​ をクリックします。

どのような場合に VM コネクタを使用するのか

VM コネクタは次の場合に使用します。

  • 直接 <flow-ref />​ を使用する代わりに、キューメカニズムを使用してフロー間でメッセージを渡す場合。

  • クラスタ全体で作業を分散する場合。

  • 同じ Mule ドメインで実行中の異なるアプリケーションと通信する場合。

  • 完全な JMS ブローカーの使用が正当化されない単純なキューが必要な場合。

キューの定義

VM の config​ は、コネクタが操作するキューを定義します。設定は、それぞれ独自の queues​ セットを指定して、何個でも定義することができます。次に例を示します。

<vm:config name="vm">
    <vm:queues>
        <vm:queue queueName="transientQueue" queueType="TRANSIENT" />
        <vm:queue queueName="persistentQueue" queueType="PERSISTENT" />
    </vm:queues>
</vm:config>

特定の config​ 内で定義された各 queue​ は、その特定の config​ を参照する操作のみが使用できることに留意してください。. キュー名 (queueName​) を複数の config で繰り返すことはできません。また、同じ名前のキューが同じアプリケーションまたはドメイン内に複数存在することもできません。

永続的なキューの制限

永続的なキューを使用する場合、メッセージはディスクに書き込まれるか、クラスタ全体に分散されるかのいずれかです。この場合はメッセージをネットワーク経由で送信する必要があります。どちらの場合でも、メッセージはシリアル化される必要があります。つまり、送信するコンテンツをシリアル化する必要があるということです。Kryo シリアル化を有効にして、より広範なシリアル化可能な値を取得できますが、Kryo にはいくつかの制限があります。そのため、永続的なキューを使用する場合は、次の点に留意してください。

  • 値は単純なものにする。構造が複雑すぎると、シリアル化しにくい場合に、シリアル化エラーやパフォーマンス上の問題が発生する可能性があります。

  • 複雑な Java オブジェクトを使用する場合、Serializable​ インターフェースが実装され、Java Bean コントラクトに準拠していることを確認する。

  • ストリーム、JSON オブジェクト、マップなどは、通常、関連する値が上記の推奨事項に準拠している限りは問題がない。

Was this article helpful?

💙 Thanks for your feedback!