296.3. 他の XML ファイルからルートをインポートする方法


Camel 2.3 の時点で利用可能

Xml Configuration を使用して Camel でルートを定義する場合、他の XML ファイルで一部のルートを定義する必要がある場合があります。たとえば、ルートが多数あり、一部のルートが別の XML ファイルにある場合、アプリケーションの管理に役立ちます。共通のルートおよび再利用可能なルートを別の XML ファイルに保存することもできますが、これは必要に応じてインポートできます。

Camel 2.3 では、新しい <route Context/> タグで実施する < camelContext/ > 外のルートを定義できるようになり ました。

注記 : <routeContext> を使用すると、分離され、<camelContext> で定義された既存の <onException>、<intercept>、<dataFormats>、および同様の相互通信機能を再利用できません。つまり、<routeContext> は現在分離されています。これは Camel 3.x で変更される可能性があります。

たとえば、以下のように 2 つのルートを含む myCoolRoutes.xml という名前のファイルを使用できます。

myCoolRoutes.xml

その後、CamelContext が含まれる XML ファイルで Spring を使用して myCoolRoute.xml ファイルをインポートできます。
そして、< camelContext/> 内では、以下のよう に ID で <routeContext/ > を参照できます。

また、CamelContext 内にルートがあり、さらに RouteContext で外部化されることも、組み合わせて一致させることができることに注意してください。

< routeContextRef/> はいくつで も指定できます。

再利用可能なルート

< routeContext/> で定義されたルートは、複数の < camelContext/> で再利用でき ます。ただし、再利用される定義のみになります。ランタイム時に、各 CamelContext は定義に基づいてルートの独自のインスタンスを作成します。

296.3.1. タイム除外をテストします。

テスト時には、テストシナリオに該当しない、または便利なものから、一致するルートを選択的に除外できます。たとえば、'org.example.routes' パッケージの spring コンテキストファイル routes-context.xml と 3 つの Route Builders RouteA、RouteB、および RouteC が含まれる場合があります。packageScan 定義は、これらの 3 つのルートすべてを検出し、初期化します。

RouteC がテストシナリオに該当せず、テスト中に多くのノイズを生成するとします。この特定のテストからこのルートを除外すると良いでしょう。これを可能にするように SpringTestSupport クラスが変更されました。1 つのクラスやクラスの配列を除外するために上書きできる 2 つのメソッド(excludedRoute および excludedRoutes)を提供します。

public class RouteAandRouteBOnlyTest extends SpringTestSupport {
    @Override
    protected Class excludeRoute() {
        return RouteC.class;
    }
}

MyExcludedRouteBuilder.class を除外するために spring で camelContext の初期化にフックするには、Spring コンテキストの作成をインターセプトする必要があります。createApplicationContext を上書きして Spring コンテキストを作成するとき、getRouteExcludingApplicationContext()メソッドを呼び出して除外を処理する特別な親 Spring コンテキストを提供します。

@Override
protected AbstractXmlApplicationContext createApplicationContext() {
    return new ClassPathXmlApplicationContext(new String[] {"routes-context.xml"}, getRouteExcludingApplicationContext());
}

RouteC が初期化から除外されるようになりました。同様に、RouteC のみをテストする別のテストでは、上書きにより RouteB および RouteA を除外できます。

@Override
protected Class[] excludeRoutes() {
    return new Class[]{RouteA.class, RouteB.class};
}
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る