Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第171章 StringTemplate
string Template リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
string-template: コンポーネントを使用すると、String Template を使用してメッセージを処理できます。これは、Templating を使用してリクエストの応答を生成する場合に理想的です。
Maven ユーザーは、このコンポーネントの
pom.xml
に以下の依存関係を追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
string-template:templateName[?options]
string-template:templateName[?options]
templateName は、呼び出すテンプレートのクラスパスローカル URI、またはリモートテンプレートの完全な URL です。
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
オプション | デフォルト | 説明 |
---|---|---|
allowContextMapAll (producer)
|
false
|
コンテキストマップが前詳細へのアクセスを許可するかどうかを設定します。デフォルトでは、メッセージの本文とヘッダーにのみアクセスできます。このオプションは、現在の Exchange および CamelContext へのフルアクセスに対して有効にできます。これを行うと、CamelContext API の全機能へのアクセスが開かれるため、潜在的なセキュリティーリスクが発生します。
|
allowTemplateFromHeader (producer)
|
false
|
ヘッダーのリソーステンプレートの使用を許可するかどうか (デフォルトは false)。このオプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼されていないコンテンツやユーザー派生コンテンツが含まれている場合、これは最終的にエンドアプリケーションの信頼性および完全性に影響を与える可能性があるため、このオプションは注意して使用してください。
|
contentCache
|
false
|
読み込み時のリソースコンテンツのキャッシュ。注記: Camel 2.9 でキャッシュされたリソースコンテンツは、エンドポイントの clearContentCache 操作を使用して JMX 経由でクリアできます。
|
delimiterStart
|
null
|
Camel 2.11.1 以降、変数開始区切り文字の設定 |
delimiterStop
|
null
|
Camel 2.11.1 以降、変数終了区切り文字の設定 |
Headers リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、キー
org.apache.camel.stringtemplate.resource
を持つメッセージヘッダーのリソースへの参照を保存します。リソースは org.springframework.core.io.Resource
オブジェクトです。
ホットリロード リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
文字列テンプレートリソースは、デフォルトではファイルとクラスパスリソース(展開形式の jar)の両方に対してホットリロードが可能です。
contentCache=true
を設定すると、Apache Camel はリソースを 1 度だけ読み込み、ホットリロードができません。このシナリオは、リソースが変更されない場合に実稼働で使用できます。
stringtemplate 属性 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Apache Camel は、エクスチェンジ情報を属性(
java.util.Map
のみ)として文字列テンプレートに提供します。Exchange は以下のように転送されます。
key | value |
---|---|
exchange
|
エクスチェンジ自体。 |
ヘッダー
|
In メッセージのヘッダー。 |
camelContext
|
Camel コンテキスト。 |
request
|
In メッセージ。 |
in
|
In メッセージ。 |
ボディー
|
In メッセージのボディー。 |
out
|
Out メッセージ(InOut メッセージ交換パターンにのみ有効)。 |
response
|
Out メッセージ(InOut メッセージ交換パターンにのみ有効)。 |
Camel 2.14 以降、以下のコードと同様に、メッセージヘッダーCamelStringTemplateVariableMapを設定してカスタムコンテキストマップを定義できます。
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
たとえば、メッセージへの応答を形成するために、以下のように文字列テンプレートを使用できます。
from("activemq:My.Queue"). to("string-template:com/acme/MyResponse.tm");
from("activemq:My.Queue").
to("string-template:com/acme/MyResponse.tm");
電子メールのサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、文字列テンプレートを使用して注文確認メールを送信します。メールテンプレートは
StringTemplate
にそのまま配置されます。この例では camel 2.11.0 で機能します。Camel バージョンが 2.11.0 未満の場合は、変数を起動して $ で終了する必要があります。
Java コードは以下のようになります。