ApacheCamel-コンポーネント

Camelは、いくつかの構築済みコンポーネントを提供します。

この章では、からのいくつかの重要なコンポーネントについて説明します。 camel-core モジュール。

ザ・ Beanコンポーネントは、BeanをCamelメッセージ交換にバインドします。エンドポイントを作成するためのURIは次のように指定されますbean:beanID、 どこ beanID で指定されているBeanの名前です Registry

JndiContext jndiContext = new JndiContext();
jndiContext.bind("MilkOrder", new MilkOrderProcessor());
CamelContext camelContext = new DefaultCamelContext(jndiContext);

camelContext.addRoutes(new RouteBuilder() {
   public void configure() {
      from("direct:bigBasket")
         .to("bean:MilkOrder?method=placeOrder");
   }
});

エンドポイントがどのように指定されているかに注意してください bean:プロトコル。オプションで、呼び出されるBeanメソッドを指定できます。この場合、呼び出されたメソッドplaceOrderエンドポイント式の評価中に呼び出されます。ザ・MilkOrder のJNDI名です MilkOrderProcessorコードスニペットの最初の2行に登録されているJavabean。の定義MilkOrderProcessor 簡潔にするために、ここではそれ自体を省略しています。

直接

あなたはの使用に気づいたに違いありません Direct前の例では。石油ベンダーに注文を送るために、direct:oilエンドポイント仕様で。の用法Directコンポーネントを使用すると、エンドポイントを同期的に呼び出すことができます。前の例の次の2つのコードスニペットは、Direct

.when(header("order").isEqualTo("oil"))
   .to("direct:oil")

そして、

from("direct:DistributeOrderDSL")
   .process(myProcessor);

ファイル

ザ・ Fileコンポーネントは、マシン上のファイルシステムへのアクセスを提供します。このコンポーネントを使用すると、他のコンポーネントからのメッセージをローカルディスクに保存できます。さらに、他のCamelコンポーネントがローカルファイルを処理できるようにします。どちらでもかまいませんfile:directoryName[?options] または file://directoryName[?options]ファイルコンポーネントを使用する際のURI形式として。このコンポーネントの使用については以前に見てきました-

from ("file:/order").to("jms:orderQueue");

注意してください Fileコンポーネントはデフォルトでディレクトリ名を取ります。したがって、注文ディレクトリの内容が入力内容として扱われます。で特定のファイルを指定するにはorder ディレクトリでは、次のステートメントを使用します-

from ("file:/order?fileName = order.xml").to("jms:orderQueue");

ログ

ザ・ Logコンポーネントを使用すると、基になるロギングメカニズムにメッセージを記録できます。Camelは、さまざまなロギングフレームワークの抽象化としてSimple Logging Facade for Java(SLF4J)を使用しています。あなたは使用することができますjava.util.logging, logback, log4jロギング用。このコードスニペットは、Log コンポーネント-

from("direct:DistributeOrderDSL")
   .to("bean:MilkOrder?method = placeOrder")
   .to("log:com.example.com?level = INFO&showBody = true");

セダ

ザ・ SEDA コンポーネントを使用すると、同じ内の別のエンドポイントを非同期で呼び出すことができます CamelContext。CamelContextインスタンス間で呼び出す場合は、次を使用する必要があります。VM成分。SEDAの使用法をここに示します-

from("direct:DistributeOrderDSL")
// send it to the seda queue that is async
   .to("seda:nextOrder")

このルートでは、注文をにルーティングするだけです。 nextOrder非同期キュー。このキューにサブスクライブしているクライアントは、このキューからメッセージを取得します。

タイマー

ザ・ Timerコンポーネントは定期的にメッセージを送信するために使用されるため、Camelアプリケーションのテスト時に非常に役立ちます。ここのコードスニペットは、2秒ごとにコンソールにテストメッセージを送信します-

from("timer://testTimer?period = 2000")
   .setBody()
   .simple("This is a test message ${header.timer}")
      .to("stream:out");