第354章 VM コンポーネント

Camel バージョン 1.1 以降で利用可能

vm: コンポーネントは非同期 SEDA 動作を提供し、BlockingQueue でメッセージを交換し、別のスレッドプールでコンシューマーを呼び出します。

このコンポーネントは、VM が CamelContext インスタンス間の通信をサポートするという点で Seda コンポーネントとは異なります。そのため、このメカニズムを使用して Web アプリケーション間で通信できます (camel-core.jarsystem/boot クラスパスにある場合)。

VM は Seda コンポーネントの拡張機能です。

354.1. URI 形式

vm:queueName[?options]

queueName は、JVM 内 (または少なくとも camel-core.jar をロードしたクラスローダー内) でエンドポイントを一意に識別する任意の文字列にすることができます。

URI には、?option=value&option=value&…​ の形式でクエリーオプションを追加できます

プロデューサーエンドポイントとコンシューマーエンドポイントの両方に、まったく同じ VM エンドポイント URI を使用する 必要があります。それ以外の場合、URI の queueName 部分が同一であっても、Camel は 2 番目の VM エンドポイントを作成します。以下に例を示します。

from("direct:foo").to("vm:bar?concurrentConsumers=5");

from("vm:bar?concurrentConsumers=5").to("file://output");

プロデューサーとコンシューマーの両方のオプションを含む完全な URI を使用する必要があることに注意してください。

Camel 2.4 ではこれが修正され、キュー名のみが一致する必要があります。キュー名 bar を使用すると、前の例を次のように書き換えることができます。

from("direct:foo").to("vm:bar");

from("vm:bar?concurrentConsumers=5").to("file://output");