Apache-camel-camelcontext
Apache Camel-CamelContext
さまざまなサービスを見てみましょう。 Registry モジュールはデフォルトではJNDIレジストリであり、アプリケーションが使用するさまざまなJavabeanの名前を保持しています。 SpringでCamelを使用する場合、これはSpring ApplicationContext になります。 OSGIコンテナでCamelを使用する場合、これは* OSGIレジストリ*になります。 名前が示すように Type converters には、入力をある形式から別の形式に変換するさまざまなタイプのコンバーターが含まれています。 組み込みのタイプコンバーターを使用するか、独自の変換メカニズムを提供できます。 Components モジュールには、アプリケーションで使用されるコンポーネントが含まれています。 コンポーネントは、指定した classpath の自動検出によってロードされます。 OSGIコンテナの場合、これらは新しいバンドルがアクティブ化されるたびにロードされます。 前の章で*エンドポイント*と*ルート*について既に説明しました。 *データ形式*モジュールにはロードされたデータ形式が含まれ、最後に*言語*モジュールはロードされた言語を表します。
ここのコードスニペットは、Camelアプリケーションで CamelContext がどのように作成されるかを垣間見ることができます-
ルート
ルーターは、 from メッセージを to ロケーションに移動するためのルールを定義します。 RouteBuilder を使用して、Java DSLでルートを定義します。 ルートを作成するには、組み込みの RouteBuilder クラスを拡張します。 ルートは from エンドポイントで始まり、エンドポイントへの1つ以上で終わります。 2つの間に、処理ロジックを実装します。 単一の configure メソッド内で任意の数のルートを設定できます。
ルートの作成方法の典型的な例を次に示します-
言語選択
異なる言語でルートを作成できます。 3つの異なる言語で同じルートがどのように定義されるかの例をいくつか示します-
Java DSL
Spring DSL
Scala DSL
フィルター
入力コンテンツの一部を選択するには、フィルターを使用します。 フィルターを設定するには、任意のhttps://camel.apache.org/predicatel[Predicate]実装を使用します。 フィルタリングされた入力は、目的の宛先エンドポイントに送信されます。 この例では、石鹸の注文をすべて除外して、石鹸の注文をまとめて石鹸サプライヤーに送信できるようにします。
この例では、フィルタリングに xpath 述語を使用しています。 あなたがフィルタリングにJavaクラスを使用したい場合は、次のコードを使用します-
あなたはここのように単一のルーティングで複数の述語を組み合わせることができます-
そのため、すべての「オイル」注文はオイルベンダーに、「ミルク」注文はミルクベンダーに、残りは共通プールに送られます。
カスタムプロセッサ
カスタム処理を使用することもできます。 以下の例では、 myCustomProcessor というカスタムプロセッサを作成し、ルートビルダーで使用しています。
カスタムプロセッサを選択およびフィルタリングとともに使用して、メディエーションおよびルーティングをより適切に制御できます-
XMLを使う
必要に応じて、より大きなXMLでルートを定義できます。 次のXMLスニペットは、Spring XMLを介したいくつかのフィルタリングとともにルートを作成する方法を示しています-
ルートがどのように構築されるかを見てきたので、エンドポイントを作成するさまざまなテクニックを見ていきます。