27.6. サンプル
Kamelets は、標準の Camel コンポーネントであるかのように使用できます。たとえば、次のようにルートテンプレートを作成したとします。
routeTemplate("setMyBody") .templateParameter("bodyValue") .from("kamelet:source") .setBody().constant("{{bodyValue}}");
注記
Kamelet コンポーネントが具体化されたルートを呼び出し元プロセッサーに配線できるようにするには、ルートの入力エンドポイントと出力エンドポイントを識別できるようにする必要があります。これは、kamel:source
を使用して入力エンドポイントをマークし、kamelet:sink
を出力に使用することによって行われます。終点。
次に、以下に示すように、テンプレートをインスタンス化して呼び出すことができます。
from("direct:setMyBody") .to("kamelet:setMyBody?bodyValue=myKamelet");
舞台裏で、Kamelet コンポーネントは次のことを行います。
-
指定された
templateId
パスパラメーター (この場合はsetBody
) によって識別されるルートテンプレートからルートをインスタンス化します。 -
これは
direct
コンポーネントのように機能し、現在のルートを具体化されたルートに接続します。
プログラムで行う必要がある場合は、次のようになります。
routeTemplate("setMyBody") .templateParameter("bodyValue") .from("direct:{{foo}}") .setBody().constant("{{bodyValue}}"); TemplatedRouteBuilder.builder(context, "setMyBody") .parameter("foo", "bar") .parameter("bodyValue", "myKamelet") .add(); from("direct:template") .to("direct:bar");