第6章 ルーティングコンテキストに別のルートを追加する
このチュートリアルでは、ZooOrderApp プロジェクトの blueprint.xml ファイルの Camel コンテキストに 2 番目のルートを追加する方法を説明します。2 番目のルート:
- 最初のルートの otherwise の場合は分岐の終端から直接メッセージ (有効な注文) を受け取ります。
- お客様の国に従って有効なメッセージを並べ替えます。
-
各メッセージを
ZooOrderApp/target/messagesフォルダーの対応する国フォルダーに送信します。たとえば、シカゴ動物園からの注文は USA フォルダーにコピーされます。
ゴール リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルでは、次のタスクを完了します。
- 2 番目のルートに直接接続するために既存のルートを再設定します
- Camel コンテキストに 2 番目のルートを追加します
- 最初のルートのブランチから直接メッセージを受信するように 2 番目のルートを設定します
- コンテンツベースのルーターを 2 番目のルートに追加します
- 2 番目のルートのコンテンツベースルーターの各出力ブランチに、メッセージヘッダー、ロギング、およびターゲット宛先を追加して設定します
前提条件 リンクのコピーリンクがクリップボードにコピーされました!
このチュートリアルを開始するには、次のいずれかの結果である ZooOrderApp プロジェクトが必要です。
5章コンテンツベースのルーターの追加 チュートリアルを完了します。
あるいは、以下のような場合もあります。
-
2章環境の設定チュートリアルを完了し、「リソースファイルについて」に記載されているように、プロジェクトの
blueprint.xmlファイルを、提供されるblueprintContexts/blueprint2.xmlファイルに置き換える。
既存のルートのエンドポイントを再設定する リンクのコピーリンクがクリップボードにコピーされました!
既存のルートは、すべての有効な注文を target/messages/validOrders フォルダーに送信します。
このセクションでは、既存のルートの Otherwise _elseValid ブランチのエンドポイントを再設定して、代わりに 2 番目のルート (次のセクションで作成します) に接続します。
2 番目のルートと直接接続するように既存のルートを設定するには:
-
ルートエディターで
ZooOrderApp/src/main/resources/OSGI-INF/blueprint/blueprint.xmlを開きます。 - キャンバスで、Route_route1 コンテナーを選択して、Properties ビューでそのプロパティーを開きます。
- Shutdown Route プロパティーまで下にスクロールして、Default を選択します。
- キャンバスで、ターミナルファイルノード To_Valid を選択して、そのプロパティーを Properties ビューに表示します。
-
Uri フィールドで既存のテキストを削除して、
direct:OrderFulfillmentを入力します。 -
Id フィールドに
_Fulfillを入力します。
既存の To_Valid 端末ファイルノードを再使用する代わりに、Components To_Valid ノードと同じプロパティー値で設定する)。
Direct コンポーネントの詳細は、Apache Camel コンポーネントリファレンス を参照してください。
2 番目のルートを追加する リンクのコピーリンクがクリップボードにコピーされました!
ルーティングコンテキストに別のルートを追加するには:
-
Palette で、Routing ドロワーを開き、Route (
) パターンをクリックします。
キャンバスで
Route_route1コンテナーの右をクリックします。キャンバスで Route パターンが
Route_route2コンテナーノードになります。-
Route_route2コンテナーノードをクリックして、Properties ビューでそのプロパティーを表示します。プロパティーはそのままにしておきます。 - ファイルを 保存 します。
ルーティングコンテキストが複雑になるにつれて、作業中はルートエディターを個々のルートに集中させることができます。これを実行するには、Project Explorer で、ルートエディターがキャンバスで表示するルートをダブルクリックします (例: Route_route2)。
キャンバスにルーティングコンテキストにあるすべてのルートを表示するには、Camel Contexts フォルダーの上部にあるプロジェクトの .xml コンテキストファイルエントリー (src/main/resources/OSGI-INF/…) をダブルクリックします。
米国の注文を処理するための Choice ブランチの設定 リンクのコピーリンクがクリップボードにコピーされました!
このセクションでは、ルートに Choice ブランチを追加し、新しい target/messages/validOrders/USA フォルダーに USA からの注文を送信するようにルートを設定します。また、メッセージヘッダーとログファイルコンポーネントを設定します。
-
Palette で、Components ドロワーを開き、Direct コンポーネントを選択します (
)。
キャンバスで
Route_route2コンテナーをクリックします。Route_route2コンテナーが拡張し、Direct コンポーネント (From_from2ノード) が追加されます。-
キャンバスで
From_from2ノードをクリックし、Properties ビューでそのプロパティーを開きます。 Uri フィールドで、
name(direct:の後) をOrderFulfillmentに置き換え、Idフィールドで、_direct:OrderFulfillmentと入力します。-
Palette で、Routing ドロワーを開き、Choice (
) パターンを選択します。
キャンバスで
From _direct:OrderFulfillmentノードをクリックします。Route_route2コンテナーが拡張し、Choice_choice2ノードが追加されます。Properties ビューで、
Choice_choice2ノードのプロパティーをそのままにしておきます。-
パレットで、Routing ドロワーを開き、When (
) パターンを選択します。
キャンバスで
Choice_choice2ノードをクリックします。Choice_choice2コンテナーが拡張し、When_when2ノードが追加されます。-
キャンバスで
When_when2ノードを選択し、Properties ビューでそのプロパティーを開きます。 When_when2ノードのプロパティーを以下のように設定します。- Expression ドロップダウンリストから xpath を選択します。
-
インデントされた Expression フィールドに、
/order/customer/country = 'USA'と入力します。 - Trim を有効のままにします。
2 番目の Id フィールドに
_when/usaと入力します。
-
Palette で、Components ドロワーを開き、File (
) コンポーネントを選択します。
キャンバスで
When_when/usaコンテナーをクリックします。When_when/usaコンテナーが拡張し、To_to1ノードが追加されます。Properties ビューで:
-
Uri フィールドで、
directoryNameをtarget/messages/validOrders/USAに置き換えます。 -
Id フィールドに
_USと入力します。
-
Uri フィールドで、
- ファイルを 保存 します。
メッセージヘッダーを設定し、ログコンポーネントを追加するには:
- Palette で、Transformation ドロワーを開き、Set Header を選択します。
キャンバスで
When_when/usaノードをクリックします。When_when/usaコンテナーが拡張し、SetHeader_setHeader3ノードが追加されます。-
キャンバスで
SetHeader_setHeader3ノードを選択し、Properties ビューでそのプロパティーを開きます。 ノードのプロパティーを次のように設定します。
- Expression ドロップダウンメニューから、constant を選択します。
-
インデントされた Expression フィールドに
USAと入力します。 - Trim を有効のままにします。
-
Header Name フィールドに
Destinationと入力します。 2 番目の Id フィールドに
_setHead_usaと入力します。
-
Palette で、Components ドロワーを開き、Log コンポーネント (
) を選択します。
キャンバスで
SetHeaderノードの上をクリックします。When_when/usaコンテナーが拡張し、Log_log3ノードが追加されます。キャンバスで
Log_log3ノードを選択し、Properties ビューでそのプロパティーを開きます。Properties ビューで:
-
Message フィールドに
Valid order - ship animals to USA customerと入力します。 -
Id フィールドに
_usaと入力します。 Logging Level はそのままにします。
-
Message フィールドに
ファイルを 保存 します。
Route_route2の USA ブランチは以下のようになります。
ドイツの注文を処理するための Otherwise ブランチの設定 リンクのコピーリンクがクリップボードにコピーされました!
Route_route2 がキャンバスに表示される場合:
-
Palette で、Routing ドロワーを開き、Otherwise のパターン (
) を選択します。
キャンバスで
Choice_choice2コンテナーをクリックします。Choice_choice2コンテナーが拡張し、Otherwise_otherwise1ノードが追加されます。-
Otherwise_otherwise1ノードを選択し、Properties ビューでそのプロパティーを開きます。 -
Properties ビューで、Id フィールドに
_else/gerと入力します。 -
Palette で、Transformation ドロワーを開き、Set Header パターン (
) を選択します。
キャンバスで
Otherwise_else/gerノードをクリックします。Otherwise_else/gerコンテナーが拡張し、SetHeader_setHeader3ノードが追加されます。-
キャンバスで
SetHeader_setHeader3ノードを選択し、Properties ビューでそのプロパティーを開きます。 Properties ビューで:
- Expression ドロップダウンリストから、constant を選択します。
-
2 番目の Expression フィールドに
Germanyと入力します。 - Trim はそのままにしておきます。
-
Header Name フィールドに
Destinationと入力します。 -
2 番目の Id フィールドに
_setHead_gerと入力します。
-
Palette で、Components ドロワーを開き、Log パターン (
) を選択します。
キャンバスで、
SetHeader_setHead_gerノードの下をクリックします。Otherwise_else/gerコンテナーが拡張し、Log_log3ノードが追加されます。必要に応じて、コネクターエラーをLog_log3ノードからSetHeader_setHead_gerノードにドラッグします。-
キャンバスで
Log_log3ノードを選択し、Properties ビューでそのプロパティーを開きます。 Properties ビューで:
-
Message フィールドに
Valid order - ship animals to Germany customerと入力します。 -
Id フィールドに
_gerと入力します。 - Logging Level はそのままにしておきます。
-
Message フィールドに
Components ドロワーで File パターン (
) を選択し、Log_gerノードの下をクリックします。Otherwise_else/gerコンテナーが拡張し、To_to1ノードが追加されます。必要に応じて、コネクターエラーをSetHeader_setHead_gerノードからTo_to1ノードにドラッグします。-
キャンバスで
To_to1ノードを選択し、Properties ビューでそのプロパティーを開きます。 Properties ビューで:
-
Uri フィールドで、
directoryNameをtarget/messages/validOrders/Germanyに置き換えます。 -
Id フィールドに
_GERと入力します。
-
Uri フィールドで、
- ファイルを 保存 します。
Route_route2 のドイツブランチは以下のようになります。
2 番目のルートを確認する リンクのコピーリンクがクリップボードにコピーされました!
キャンバス上のルートは次のようになります。
完成したルート 1
完成したルート 2
キャンバスの下部にある Source タブで、camelContext 要素の XML は次のようになります。例6.1「デュアルルートコンテンツベースルーターの XML」:
例6.1 デュアルルートコンテンツベースルーターの XML
ツールが shutdownRoute=" " 属性を 2 番目のルート要素 (<route id="route2">) に追加した場合は、その属性を削除します。そうしないと、ZooOrderApp プロジェクトの実行に失敗する可能性があります。
更新されたプロジェクトが期待どおりに機能することを確認するには、次の手順に従います。
-
ZooOrderApp/Camel Contexts/blueprint.xmlをローカルの Camel コンテキスト (テストなし) として実行します。 コンソールの出力の終わりを確認します。次の行が表示されます。
ターゲットの宛先フォルダーを確認して、ルートが正しく実行されたことを確認します。
-
Project Explorer で
ZooOrderAppを右クリックし、Refresh を選択します。 target/messages/フォルダーをデプロイメントします。message*.xmlファイルが以下のように宛先フォルダー内で分散されるはずです。図6.1 プロジェクトエクスプローラーでのターゲットメッセージの宛先
-
Project Explorer で
次のステップ リンクのコピーリンクがクリップボードにコピーされました!
次のチュートリアル 7章ルーティングコンテキストのデバッグでは、Fuse Tooling デバッガーの使用方法を学習します。