第57章 Camel CDI
Camel CDI コンポーネントは、CDI を convention-over-configuration をベースとした依存性注入フレームワークとして使用して Apache Camel の自動設定を提供します。これは、アプリケーションで利用可能な Camel ルートを自動検出し、Endpoint
、 FluentProducerTemplate
、ProducerTemplate
、 TypeConverter
などの共通の Camel プリミティブの Bean を提供します。CDI Bean で @Consume
、 @Produce
、 @PropertyInject
などの Camel アノテーションをシームレスに使用できるように、標準の Camel Bean インテグレーションを実装します。さらに、Camel イベント( RouteAddedEvent
、CamelContextStartedEvent
、 ExchangeCompletedEvent
など)を CDI イベントとしてブリッジし、/ から Camel ルートに CDI イベントを消費/生成するのに使用できる CDI イベントエンドポイントを提供します。
Camel CDI コンポーネントは Camel 2.10 の時点で利用できますが、CDI プログラミングモデルにより適するように Camel 2.17 で書き換えられました。そのため、Camel イベントなどの機能の一部を CDI イベントブリッジと CDI events エンドポイントが起動する Camel 2.17 にのみ適用されます。
Camel CDI アプリケーションをテストする方法の詳細は、「Camel CDI testing」を参照してください。
camel-cdi は OSGi で非推奨となり、サポートされていません。Camel を OSGi と併用する場合は、OSGi Blueprint を使用します。
57.1. 自動設定された Camel コンテキスト
Camel CDI は CamelContext
Bean を自動的にデプロイし、設定します。CDI コンテナーの初期化(シャットダウン)時に、CamelContext
Bean は自動的にインスタンス化され、設定され、起動(停止)されます。以下のように、アプリケーションに注入することができます。
@Inject CamelContext context;
デフォルトの CamelContext
Bean は組み込みの @Default
修飾子で修飾され、スコープは @ApplicationScoped
で、タイプは DefaultCamelContext
です。
この Bean は、プログラムを用いてカスタマイズでき、他の Camel コンテキスト Bean もアプリケーションにデプロイできます。