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]ファイルへメッセージを送るかファイル又はディレクトリからのポーリング