第95章 言語


言語

Camel 2.5 で利用可能
言語コンポーネントを使用すると、Camel でサポートされる言語によってスクリプトを実行するエンドポイントに エクスチェンジ を送信できます。http://camel.apache.org/language.html言語スクリプトを実行するコンポーネントを使用すると、より動的なルーティング機能が可能になります。たとえば、Routing SlipRouting Slip または Dynamic RouterDynamic Router EIP を使用すると、スクリプトが動的に定義される 言語 エンドポイントにメッセージを送信することができます。
このコンポーネントは camel-core の追加設定なしで提供されるため、追加の JAR は必要ありません。GroovyJavaScript 言語の使用など、選択の言語が義務付けられている場合にのみ、追加の Camel コンポーネントを含める必要があります。
Camel 2.11 以降では、Camel の他の 言語 でサポートされるのと同じ表記を使用するスクリプトの外部リソースを参照できます。
language://languageName:resource:scheme:location][?options]
Copy to Clipboard Toggle word wrap

URI 形式

language://languageName[:script][?options]
Copy to Clipboard Toggle word wrap

URI オプション

コンポーネントは以下のオプションをサポートします。
Expand
名前 デフォルト値 説明
languageName null 文字列 単純なgroovyjavascript など、使用する 言語 の名前。このオプションは必須です。
script null 文字列 実行するスクリプト。
変換 true boolean スクリプトの結果を新しいメッセージボディーとして使用するかどうか。false に設定するとスクリプトが実行されますが、スクリプトの結果は破棄されます。
contentCache true boolean
Camel 2.9: リソースからロードされた場合にスクリプトをキャッシュするかどうか。注記: Camel 2.10.3 から、キャッシュされたスクリプトは clearContentCache 操作を使用して JMX 経由でランタイム時にリロードを強制できます。
cacheScript
false
boolean
Camel 2.13/2.12.2/2.11.3: コンパイルされたスクリプトをキャッシュするかどうか。このオプションを有効にすると、スクリプトはコンパイル/作成が 1 回のみ行われ、Camel メッセージの処理時に再利用されるため、パフォーマンスが向上します。ただし、これにより、以前の評価で残ったデータに対する副次的な影響が引き起こされ、同時実行の問題にも影響が及ぶ可能性があります。評価中のスクリプトがべき等である場合、このオプションはオンにすることができます。
binary false boolean Camel 2.14.1: スクリプトがバイナリーコンテンツであるかどうか。これは、バイナリーファイルの読み込みなど、Constant 言語を使用してリソースを読み込むために使用されます。

メッセージヘッダー

以下のメッセージヘッダーを使用して、コンポーネントの動作に影響を与えることができます。
Expand
ヘッダー 説明
CamelLanguageScript ヘッダーで提供される実行するスクリプト。エンドポイントに設定されたスクリプトよりも優先されます。

たとえば、Simple 言語を Message TranslatorMessage Translator a メッセージに使用できます。
String script = URLEncoder.encode("Hello ${body}", "UTF-8");
from("direct:start").to("language:simple:" + script).to("mock:result");
Copy to Clipboard Toggle word wrap
メッセージボディーの型を変換する場合は、これも実行できます。
String script = URLEncoder.encode("${mandatoryBodyAs(String)}", "UTF-8");
from("direct:start").to("language:simple:" + script).to("mock:result");
Copy to Clipboard Toggle word wrap
また、この例では、入力メッセージを 2 を乗算して、Groovy 言語を使用することもできます。
from("direct:start").to("language:groovy:request.body * 2").to("mock:result");
Copy to Clipboard Toggle word wrap
以下に示すように、スクリプトをヘッダーとして提供することもできます。ここでは、XPath 言語を使用して < foo > タグからテキストを抽出します。
Object out = producer.requestBodyAndHeader("language:xpath", "<foo>Hello World</foo>", Exchange.LANGUAGE_SCRIPT, "/foo/text()");
assertEquals("Hello World", out);
Copy to Clipboard Toggle word wrap

リソースからのスクリプトの読み込み

Camel 2.9 以降で利用可能
エンドポイント URI または Exchange.LANGUAGE_SCRIPT ヘッダーのいずれかでロードするスクリプトのリソース URI を指定できます。uri は、file:、classpath:、または http のいずれかのスキームで開始する必要があります。
たとえば、クラスパスからスクリプトを読み込むには、次のコマンドを実行します。
from("direct:start")
    // load the script from the classpath
    .to("language:simple:classpath:org/apache/camel/component/language/mysimplescript.txt")
    .to("mock:result");
Copy to Clipboard Toggle word wrap
デフォルトでは、スクリプトは一度ロードされてキャッシュされます。ただし、contentCache オプションを無効にして、評価ごとにスクリプトを読み込むことができます。たとえば、ディスク上のファイル myscript.txt が変更された場合は、更新されたスクリプトが使用されます。
from("direct:start")
    // the script will be loaded on each message, as we disabled cache
    .to("language:simple:file:target/script/myscript.txt?contentCache=false")
    .to("mock:result");
Copy to Clipboard Toggle word wrap
Camel 2.11 以降では、以下のように resource : と接頭辞を付けると、Camel の他の 言語 と同様のリソース を参照できます。
from("direct:start")
    // load the script from the classpath
    .to("language:simple:resource:classpath:org/apache/camel/component/language/mysimplescript.txt")
    .to("mock:result");
Copy to Clipboard Toggle word wrap
  • Routing SlipRouting Slip
  • Dynamic RouterDynamic Router
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat