第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 でスコープされたプロトタイプを含めることができます。