検索

60.5. 複数の Camel コンテキスト

download PDF

上で説明したように、実際にはアプリケーションで任意の数の CamelContext Bean を宣言できます。その場合、これらの CamelContext Bean で宣言された CDI 修飾子は、対応する Camel コンテキストへの Camel ルートおよび他の Camel プリミティブを BIND するために使用されます。例から、次の Bean が宣言された場合:

@ApplicationScoped
@ContextName("foo")
class FooCamelContext extends DefaultCamelContext {
}

@ApplicationScoped
@BarContextQualifier
class BarCamelContext extends DefaultCamelContext {
}

@ContextName("foo")
class RouteAddedToFooCamelContext extends RouteBuilder {

    @Override
    public void configure() {
        // ...
    }
}

@BarContextQualifier
class RouteAddedToBarCamelContext extends RouteBuilder {

    @Override
    public void configure() {
        // ...
    }
}

@ContextName("baz")
class RouteAddedToBazCamelContext extends RouteBuilder {

    @Override
    public void configure() {
        // ...
    }
}

@MyOtherQualifier
class RouteNotAddedToAnyCamelContext extends RouteBuilder {

    @Override
    public void configure() {
        // ...
    }
}

@ContextName で修飾された RoutesBuilder Bean は、Camel CDI によって対応する CamelContext Bean に自動的に追加されます。そのような CamelContext Bean が存在しない場合は、RouteAddedToBazCamelContext Bean の場合と同様に、自動的に作成されます。これは、Camel CDI によって提供される @ContextName 修飾子に対してのみ発生することに注意してください。したがって、ユーザー定義の @MyOtherQualifier 修飾子で修飾された RouteNotAddedToAnyCamelContext Bean は、どの Camel コンテキストにも追加されません。これは、たとえば、後でアプリケーションの実行中に追加する必要がある Camel ルートの場合に役立ちます。

注記

Camel バージョン 2.17.0 以降、Camel CDI はあらゆる種類の CamelContext Bean (例: DefaultCamelContext) を管理できます。以前のバージョンでは、タイプ CdiCamelContext の Bean しか管理できないため、拡張する必要があります。

CamelContext Bean で宣言された CDI 修飾子は、対応する Camel プリミティブを BIND するためにも使用されます。以下に例を示します。

@Inject
@ContextName("foo")
@Uri("direct:inbound")
ProducerTemplate producerTemplate;

@Inject
@ContextName("foo")
@Uri("direct:inbound")
FluentProducerTemplate fluentProducerTemplate;

@Inject
@BarContextQualifier
MockEndpoint outbound; // URI defaults to the member name, i.e. mock:outbound

@Inject
@ContextName("baz")
@Uri("direct:inbound")
Endpoint endpoint;
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.