Apache Camel

Apache Camelはルーティングエンジンであり、Apacheソフトウェア財団が開発しているオープンソースソフトウェアである。

CamelはApache CXFやApache ActiveMQなどのSOA基盤と共に使用されることが多い。

Camelでは、次の表に示すさまざまなドメイン固有言語(DSL: Domain-specific language)を使用して経路を定義する。

Cemel DSL
DSLDescription
Annotation DSLJava beansのアノテーションを使ったDSL
Blueprint DSLOSGi Blueprint XMLに基づいたDSL
Groovy DSLGroovyに基づいたDSL
Java DSLJavaに基づいたDSL
Rest DSLRESTサービスを定義するDSL
Spring DSLSpring XMLに基づいたDSL

Camelでは、次に示すようにRouteBuilderを使ったJava DSLでルーティングルールを定義できる。

RouteBuilder builder = new RouteBuilder() {
  public void configure() {
    errorHandler(deadLetterChannel("mock:error"));
    from("direct:a").to("direct:b");
  }
};

エンドポイント

エンドポイントはCamelにおいてシステムがメッセージを送受信できるチャネルの終端をモデル化したものである。Camelでは次に示す書式のURIを用いてエンドポイントを設定する。

URI
URIDescription
direct:someName[?options]同じCamelContextから他のエンドポイントへの同期呼び出し
file:directoryName[?options]ファイルへメッセージを送るかファイル又はディレクトリからのポーリング

Camelはプラグイン可能なデータフォーマットをサポートしているので、メッセージをバイナリ形式またはテキスト形式との間でマーシャリングして、一種のメッセージトランスレータをサポートする。

SOAP

SOAPは、JAXB2JAX-WSのアノテーションを使用して、SOAPのペイロードをマーシャリングおよびアンマーシャリンングする。

CXFスタックを必要としないApache CXFの基本機能を提供する。

Camel Components

Apache Camelは、次に示すコア・コンポーネントを提供している。

コア・コンポーネント
コンポーネント 説明
Bean Camelレジストリに格納されているJava Beansのメソッドを起動する。
Browse BrowsableEndpointをサポートするエンドポイントで受信したメッセージを検査する。
Class クラス名で指定されたJava Beansのメソッドを起動する。
Control Bus Camelルートを管理および監視する。
Data Format Camel Data Formatを通常のCamelコンポーネントとして使用する。
Dataset Camelアプリケーションのロードおよびソークテスト用のデータを提供する。
Dataset Test 起動時に別のコマンドポイントからメッセージをプルして、想定されるメッセージ本文を設定することによって、モック・コンポーネントを拡張する。
Direct 同じCamelコンテキストから別のエンドポイントを同期的に呼び出す。
Direct VM 同じJVM内の任意のCamel Contextから別のエンドポイントを同期的に呼び出す。
File ファイルの読み取りと書き込み
Kamelet Kameletを呼び出す。
Kamelet Reify Kameletを間接的に呼び出す。
Language Camelがサポートする任意の言語でスクリプトを実行する。
Log 基礎となるロギング・メカニズムにメッセージをロギングする。

Apache Camel K

Apache Camel Kとは、Apache Camelで構築された軽量な統合フレームワークである。Kubernetes上で動作し、特にサーバレスアーキテクチャとマイクロサービスアーキテクチャ向けに設計されている。

Camel Kのユーザは、Camel DSLで書かれた統合コードを、好みのクラウド(KubernetesやOpenShift)上で即座に実行することができる。

Camel Kafka Connector

Camel Kafka Connectorを使用すると、すべてのCamelコンポーネントをKafka Connectコネクタとして使用できる。

基本的なアイデアは、利用可能なCamelコンポーネントをKafkaシンクおよびソースコネクタとして簡単な方法で再利用することである。

Camel Spring Boot

CamelはSpring Bootをサポートしており、Camelの自動設定や多くのCamelコンポーネントのスタータを提供している。

Camelコンテキストの独自の自動構成により、Springコンテキストで使用可能なCamelルートが自動検出され、主要なCamelユーティリティ(プロデューサーテンプレート、コンシューマーテンプレートおよびタイプコンバータ等)がBeanとして登録される。

Camel Karaf

Apache Camelは、Apache Karaf OSGiコンテナで動作するよう設計されている。

参考文献

The Apache Software Foundation 2021. Apache Camel