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