第1章 ルート定義のためのビルディングブロック
概要
Apache Camel はルートを定義するために、Java DSL と Spring XML DSL の 2 つの ドメイン固有言語 (DSL) をサポートします。ルートを定義するための基本的なビルディングブロックは エンドポイント および プロセッサー で、プロセッサーの動作は通常 式 または論理 述語 によって変更されます。Apache Camel は、さまざまな言語を使用して式や述語を定義できます。
1.1. RouteBuilder クラスの実装 リンクのコピーリンクがクリップボードにコピーされました!
概要 リンクのコピーリンクがクリップボードにコピーされました!
ドメイン固有言語 (DSL) を使用するには、RouteBuilder
クラスを拡張し、その configure()
メソッド (ここにルーティングルールを定義します) を上書きします。
必要な数だけ RouteBuilder
クラスを定義できます。各クラスは一度インスタンス化され、CamelContext
オブジェクトに登録されます。通常、各 RouteBuilder
オブジェクトのライフサイクルは、ルーターをデプロイするコンテナーによって自動的に管理されます。
RouteBuilder クラス リンクのコピーリンクがクリップボードにコピーされました!
ルート開発者の主なロールは、1 つ以上の RouteBuilder
クラスを実装することです。以下の 2 つの代替 RouteBuilder
クラスを継承できます。
-
org.apache.camel.builder.RouteBuilder
: これは、あらゆる コンテナータイプへのデプロイに適した汎用のRouteBuilder
ベースクラスです。camel-core
アーティファクトで提供されます。 -
org.apache.camel.spring.SpringRouteBuilder
: このベースクラスは、Spring コンテナーに特別に適合されています。特に、以下の Spring 固有の機能に対する追加サポートが提供されます。追加サポートの対象となる機能は、Spring レジストリーでの Bean 検索 (beanRef()
Java DSL コマンドを使用) およびトランザクション (詳細は トランザクションガイド を参照) です。camel-spring
アーティファクトで提供されます。
RouteBuilder
クラスは、ルーティングルールの開始に使用されるメソッドを定義します (例: from()
、intercept()
、および exception()
)。
RouteBuilder の実装 リンクのコピーリンクがクリップボードにコピーされました!
例1.1「RouteBuilder クラスの実装」 は、最小限の RouteBuilder
実装を示しています。configure()
メソッド本文にはルーティングルールが含まれ、各ルールは単一の Java ステートメントです。
例1.1 RouteBuilder クラスの実装
from(URL1).to(URL2)
ルールの形式は、src/data
ディレクトリーからファイルを読み込み、それを target/messages
ディレクトリーに送信するようルーターに指示します。?noop=true
オプションは、src/data
ディレクトリー内のソースファイルを (削除ではなく) 保持するようにルーターに指示します。
Spring または Blueprint で contextScan
を使用して RouteBuilder
クラスをフィルターする場合、Apache Camel はデフォルトでシングルトン Bean を検索します。ただし、以前の動作をオンにして、新しいオプション includeNonSingletons
でスコープされたプロトタイプを含めることができます。