検索

282.7. サンプル

download PDF

以下の Spring XML の例では、ヘッダー値に基づいてフィルターを行います。

<from uri="seda:orders">
   <filter>
       <simple>${in.header.foo}</simple>
       <to uri="mock:fooOrders"/>
   </filter>
</from>

Simple 言語は、Message Filter パターンの上記の述語テストに使用できます。ここでは、in メッセージに foo ヘッダーがあるかどうかをテストします(キー foo を持つヘッダーが存在するかどうかをテストします)。式が true に評価されると、メッセージは mock:fooOrders エンドポイントにルーティングされます。そうでない場合、メッセージは破棄されます。

Java DSL と同じ例は次のとおりです。

from("seda:orders")
    .filter().simple("${in.header.foo}")
        .to("seda:fooOrders");

Simple 言語は、以下のような単純なテキスト連結にも使用できます。

from("direct:hello")
    .transform().simple("Hello ${in.header.user} how are you?")
    .to("mock:reply");

式で $\{ } プレースホルダーを使用して、Camel がこれを正しく解析できるようにする必要があります。

この例では、date コマンドを使用して現在の日付を出力します。

from("direct:hello")
    .transform().simple("The today is ${date:now:yyyyMMdd} and it is a great day.")
    .to("mock:reply");

また、以下の例では Bean 言語を呼び出して、返された文字列に含まれる Bean 上でメソッドを呼び出します。

from("direct:order")
    .transform().simple("OrderId: ${bean:orderIdGenerator}")
    .to("mock:reply");

orderIdGenerator は、レジストリーに登録されている Bean の ID に置き換えます。Spring を使用している場合は、Spring Bean id になります。

注文 ID ジェネレーター Bean で呼び出すメソッドを宣言したい場合は、以下のように .method 名の前に .method メソッドを呼び出します。ここで、generateId メソッドを呼び出します。

from("direct:order")
    .transform().simple("OrderId: ${bean:orderIdGenerator.generateId}")
    .to("mock:reply");

Bean コンポーネント自体に精通している ?method=methodname オプションを使用することもできます。

from("direct:order")
    .transform().simple("OrderId: ${bean:orderIdGenerator?method=generateId}")
    .to("mock:reply");

Camel 2.3 以降では、以下のようにボディーを特定の型に変換することもできます。

<transform>
  <simple>Hello ${bodyAs(String)} how are you?</simple>
</transform>

短縮表記が含まれるいくつかのタイプがあるため、java.lang. String の代わりに String を使用できます。これらは byte[]、String、Integer、Long です。その他のタイプはすべて、org.w3c.dom.Document など、FQN 名を使用する必要があります。

Camel 2.3 以降では、ヘッダー マップ から値を検索することもできます。

<transform>
  <simple>The gold value is ${header.type[gold]}</simple>
</transform>

上記のコードでは、名前 を持つヘッダーを検索し、java.util.Map として考慮し、キー gold でルックアップし、値を返します。ヘッダーが変換可能でない場合は、例外が発生します。名前 タイプ のあるヘッダーが存在しない場合には、null を返します。

Camel 2.9 以降では、以下のような機能をネスト化できます。

<setHeader headerName="myHeader">
  <simple>${properties:${header.someKey}}</simple>
</setHeader>
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.