第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 クラスの実装
import org.apache.camel.builder.RouteBuilder; public class MyRouteBuilder extends RouteBuilder { public void configure() { // Define routing rules here: from("file:src/data?noop=true").to("file:target/messages"); // More rules can be included, in you like. // ... } }
from(URL1).to(URL2)
ルールの形式は、src/data
ディレクトリーからファイルを読み込み、それを target/messages
ディレクトリーに送信するようルーターに指示します。?noop=true
オプションは、src/data
ディレクトリー内のソースファイルを (削除ではなく) 保持するようにルーターに指示します。
Spring または Blueprint で contextScan
を使用して RouteBuilder
クラスをフィルターする場合、Apache Camel はデフォルトでシングルトン Bean を検索します。ただし、以前の動作をオンにして、新しいオプション includeNonSingletons
でスコープされたプロトタイプを含めることができます。