Apache Camelはルーティングエンジンであり、Apacheソフトウェア財団が開発しているオープンソースソフトウェアである。
CamelはApache CXFやApache ActiveMQなどのSOA基盤と共に使用されることが多い。
Camelでは、次の表に示すさまざまなドメイン固有言語(DSL: Domain-specific language)を使用して経路を定義する。
DSL | Description |
---|---|
Annotation DSL | Java beansのアノテーションを使ったDSL |
Blueprint DSL | OSGi Blueprint XMLに基づいたDSL |
Groovy DSL | Groovyに基づいたDSL |
Java DSL | Javaに基づいたDSL |
Rest DSL | RESTサービスを定義するDSL |
Spring DSL | Spring 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 | Description |
---|---|
direct:someName[?options] | 同じCamelContext から他のエンドポイントへの同期呼び出し |
file:directoryName[?options] | ファイルへメッセージを送るかファイル又はディレクトリからのポーリング |
Camelはプラグイン可能なデータフォーマットをサポートしているので、メッセージをバイナリ形式またはテキスト形式との間でマーシャリングして、一種のメッセージトランスレータをサポートする。
SOAPは、JAXB2とJAX-WSのアノテーションを使用して、SOAPのペイロードをマーシャリングおよびアンマーシャリンングする。
CXFスタックを必要としないApache CXFの基本機能を提供する。
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で構築された軽量な統合フレームワークである。Kubernetes上で動作し、特にサーバレスアーキテクチャとマイクロサービスアーキテクチャ向けに設計されている。
Camel Kのユーザは、Camel DSLで書かれた統合コードを、好みのクラウド(KubernetesやOpenShift)上で即座に実行することができる。
Camel Kafka Connectorを使用すると、すべてのCamelコンポーネントをKafka Connectコネクタとして使用できる。
基本的なアイデアは、利用可能なCamelコンポーネントをKafkaシンクおよびソースコネクタとして簡単な方法で再利用することである。
CamelはSpring Bootをサポートしており、Camelの自動設定や多くのCamelコンポーネントのスタータを提供している。
Camelコンテキストの独自の自動構成により、Springコンテキストで使用可能なCamelルートが自動検出され、主要なCamelユーティリティ(プロデューサーテンプレート、コンシューマーテンプレートおよびタイプコンバータ等)がBeanとして登録される。
Apache Camelは、Apache Karaf OSGiコンテナで動作するよう設計されている。
The Apache Software Foundation 2021. Apache Camel