第137章 Routebox
Routebox コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.6 以降で利用可能
Routebox が変更可能
routebox コンポーネントを使用すると、自動作成またはユーザーが挿入された Camel コンテキストでホストされる Camel ルートのコレクションにカプセル化およびストラテジーベースの間接サービスを提供する特殊なエンドポイントを作成できます。
Routebox エンドポイントは、Camel ルートで直接呼び出すことができる Camel エンドポイントです。routebox エンドポイントは、以下の主要な機能 * カプセル化を実行します。ブラックボックスとして機能し、内部 Camel コンテキストに保存された Camel ルートのコレクションをホストします。内部コンテキストは routebox コンポーネントの制御下にあり、JVM バインド です。* ストラテジーベースの間接化 - ユーザー定義の内部ルーティングストラテジーまたはディスパッチマップに基づいて、camel ルートとともに routebox エンドポイントに送信される直接ペイロード。* Exchange propagation - routebox エンドポイントによって変更されたエクスチェンジを camel ルートの次のセグメントに転送します。
routebox コンポーネントは、コンシューマーエンドポイントとプロデューサーエンドポイントの両方をサポートします。
プロデューサーエンドポイントは 2 つのフレーバーです。* 受信したリクエストを外部の routebox コンシューマーエンドポイントに送信またはディスパッチするプロデューサーです。内部埋め込み Camel コンテキストでルートを直接呼び出すプロデューサーにより、外部コンシューマーにリクエストを送信しません。
Maven ユーザーは、このコンポーネントの
pom.xml に以下の依存関係を追加する必要があります。
Camel Routebox エンドポイントの要件 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
routebox コンポーネントは、必要な複雑な環境での統合を容易にするように設計されています。
- ルート と の大規模なコレクション
- さまざまな方法で統合を必要とするエンドポイントテクノロジーのセットが関係します。
このような環境では、Camel ルート間での階層化を効果的に整理することで、統合ソリューションを作成する必要があることがよくあります。
- 粒度の細かいルートや、統合フォーカスエリアを表す Routebox エンドポイントとして公開される内部または下位レベルのルートの集約コレクション。以下に例を示します。
Expand フォーカスエリア 粒度の細かいルートの例 部門中心 HR ルート、営業ルートなど サプライチェーンと B2B Focus ルート、フィルフィルメントルート、サードパーティーサービスなどの配送 テクノロジーの焦点 データベースルート、JMS ルート、スケジュール済みバッチルートなど - 粒度の細かいルート:単数で特定のビジネスや統合パターンを実行するルート。
粒度の細かいルートで Routebox エンドポイントに送信される要求は、要求を内部の詳細なルートに委譲して特定の統合目的を達成し、最終的な内部結果を収集して、粒度の細かいルートで次のステップに進むことができます。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
routebox:routeboxname[?options]
routebox:routeboxname[?options]
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
| 名前 | デフォルト値 | 説明 |
|---|---|---|
dispatchStrategy
|
null
|
インターフェイス org.apache.camel.component.routebox.strategy.RouteboxDispatchStrategyを実装するオブジェクト値と一致する Camel レジストリーのキーを表す文字列 |
dispatchMap
|
null
|
HashMap<String, String> タイプのオブジェクト値と一致する Camel レジストリーのキーを表す文字列。HashMap キーには、エクスチェンジヘッダー ROUTE_DISPATCH_KEY に設定された値に対して一致する文字列が含まれている必要があります。HashMap 値には、リクエストを転送する必要のある内部ルートコンシューマー URI が含まれる必要があります。 |
innerContext
|
自動作成
|
org.apache.camel.CamelContext 型のオブジェクト値と一致する Camel レジストリーのキーを表す文字列。ユーザーによって CamelContext が提供されていない場合、内部ルートのデプロイのために CamelContext が自動的に作成されます。 |
innerRegistry
|
null
|
Camel レジストリーのキーを表す文字列は、インターフェイス org.apache.camel.spi.Registry を実装するオブジェクト値と一致します。エンドポイントを作成するために内部ルートで使用されるレジストリー値を使用する場合は、innerRegistry パラメーターを指定する必要があります。 |
routeBuilders
|
空のリスト
|
List<org.apache.camel.builder.RouteBuilder> タイプのオブジェクト値に一致する Camel レジストリーのキーを表す文字列。ユーザーが内部ルートに先行する innerContexts を提供しない場合、routeBuilders オプションは内部ルートを含む RouteBuilder の空でないリストとして指定する必要があります。 |
innerProtocol
|
Direct
|
Routebox コンポーネントによって内部で使用される Protocol。Direct または SEDA にすることができます。Routebox コンポーネントは、現在 JVM にバインドされるプロトコルを提供します。 |
sendToConsumer
|
true
|
Producer エンドポイントがリクエストを外部 routebox コンシューマーに送信するかどうかを指定します。設定が false の場合、Producer は埋め込みの内部コンテキストを作成し、内部で要求を処理します。 |
forkContext
|
true
|
Routebox コンポーネントによって内部で使用される Protocol。Direct または SEDA にすることができます。Routebox コンポーネントは、現在 JVM にバインドされるプロトコルを提供します。 |
threads
|
20
|
リクエストを受信するために routebox が使用するスレッドの数。innerProtocol SEDA のみに適用可能な設定。 |
queueSize
|
無制限
|
要求を受信する固定サイズキューを作成します。innerProtocol SEDA のみに適用可能な設定。 |
routebox へのメッセージの送受信 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
リクエストを送信する前に、以下に示すように、必要な URI パラメーターをレジストリーにロードして routebox を適切に設定する必要があります。Spring の場合、必要な Bean が正しく宣言されると、レジストリーは自動的に Camel によって入力されます。
ステップ 1: レジストリーへの内部ルート詳細の読み込み リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ステップ 2: ディスパッチマップの代わりにディスパッチストラテジーを使用するオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ディスパッチストラテジーを使用するには、以下の例のように org.apache.camel.component.routebox.strategy.RouteboxDispatchStrategy インターフェイスを実装する必要があります。
ステップ 2: routebox コンシューマーの起動 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ルートコンシューマーの作成時に、routeboxUri の # エントリーが CamelContext レジストリーの作成された内部レジストリー、routebuilder リスト、および dispatchStrategy/dispatchMap に一致することに注意してください。すべての routebuilders および関連するルートが内部コンテキストで作成された routebox で起動することに注意してください。
ステップ 3: routebox プロデューサーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
routebox にリクエストを送信する場合、プロデューサーは内部ルートエンドポイント URI を認識する必要はありません。以下のように、ディスパッチストラテジーまたは dispatchMap で Routebox URI エンドポイントを呼び出すだけです。
要求を正しい内部ルートに送信できるように、ディスパッチマップのキーに一致するキー ROUTE_DISPATCH_KEY (Dispatch Strategy の場合オプション)と呼ばれる特別なエクスチェンジヘッダーを設定する必要があります。