Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第35章 Direct-VM
Direct VM コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.10 以降で利用可能
direct-vm: コンポーネントは、プロデューサーがメッセージエクスチェンジを送信するときに JVM のコンシューマーを直接同期呼び出しを提供します。このエンドポイントは、同じ Camel コンテキスト内の既存のルートと、同じ JVM の他の Camel コンテキストから接続するために使用できます。
このコンポーネントは、 Direct -VM が CamelContext インスタンス全体の通信をサポートする点で Direct コンポーネントとは異なります。そのため、このメカニズムを使用して Web アプリケーション全体で通信できます(camel-core.jar がシステム/ブートクラスパス上にある場合)。
ランタイム時に、既存のコンシューマーを停止し、新しいコンシューマーを開始することで、新しいコンシューマーにスワップできます。ただし、ある時点では、特定のエンドポイントに対して最大 1 つのアクティブなコンシューマーしか存在できません。
このコンポーネントを使用すると、以下の後に確認できるように、異なる OSGI バンドルにデプロイされたルートを接続することもできます。異なるバンドルで実行されている場合でも、Camel ルートは同じスレッドを使用します。トランザクションを使用してアプリケーションを開発するための自動スリア(Tx)。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
direct-vm:someName
direct-vm:someName
someName には、エンドポイントを一意に識別する任意の文字列を指定できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
名前 | デフォルト値 | 説明 |
---|---|---|
block
|
false
|
Camel 2.11.1: アクティブなコンシューマーのないダイレクトエンドポイントにメッセージを送信する場合は、プロデューサーにブロックし、コンシューマーがアクティブになるのを待つようにプロデューサーに指示することができます。 |
timeout
|
30000
|
Camel 2.11.1: ブロックが有効な場合に使用するタイムアウト値。 |
failIfNoConsumers
|
true
|
Camel 2.16.0: アクティブなコンシューマーのない DIRECT エンドポイントに送信するときにプロデューサーが例外を出力して失敗するかどうかを示します。
|
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
以下のルートでは、direct コンポーネントを使用して 2 つのルートをリンクします。
from("activemq:queue:order.in") .to("bean:orderServer?method=validate") .to("direct-vm:processOrder");
from("activemq:queue:order.in")
.to("bean:orderServer?method=validate")
.to("direct-vm:processOrder");
別の CamelContext (別の OSGi バンドルなど)で
from("direct-vm:processOrder") .to("bean:orderService?method=process") .to("activemq:queue:order.out");
from("direct-vm:processOrder")
.to("bean:orderService?method=process")
.to("activemq:queue:order.out");
Spring DSL を使用した例: