第21章 Chunk
チャンクコンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.15 以降で利用可能
Maven ユーザーは、このコンポーネントの以下の依存関係を
pom.xml に追加する必要があります。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
chunk:templateName[?options]
chunk:templateName[?options]
templateName は、呼び出すテンプレートのクラスパスローカル URI に置き換えます。
以下の形式で URI にクエリーオプションを追加できます。
?option=value&option=value&...
オプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
|
オプション
|
デフォルト
|
説明
|
|---|---|---|
allowContextMapAll (producer)
|
false
|
コンテキストマップが前詳細へのアクセスを許可するかどうかを設定します。デフォルトでは、メッセージの本文とヘッダーにのみアクセスできます。このオプションは、現在の Exchange および CamelContext へのフルアクセスに対して有効にできます。これを行うと、CamelContext API の全機能へのアクセスが開かれるため、潜在的なセキュリティーリスクが発生します。
|
allowTemplateFromHeader (producer)
|
false
|
ヘッダーのリソーステンプレートの使用を許可するかどうか (デフォルトは false)。このオプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼されていないコンテンツやユーザー派生コンテンツが含まれている場合、これは最終的にエンドアプリケーションの信頼性および完全性に影響を与える可能性があるため、このオプションは注意して使用してください。
|
encoding
|
null
|
リソースコンテンツの文字エンコーディング。
|
|
themesFolder
|
null
|
テンプレート名をスキャンする代替フォルダー。
|
|
themeSubfolder
|
null
|
themeFolder パラメーターが設定されている場合にテンプレート名をスキャンする代替サブフォルダー。
|
themeLayer
|
null
|
テンプレートとして使用するテンプレートファイルの特定のレイヤー。
|
extension
|
null
|
themeFolder および themeSubfolder が設定されている場合にテンプレート名をスキャンする代替拡張。
|
チャンクコンポーネントは、拡張機能 .chtml または cxml を持つ themes フォルダーで特定のテンプレートを検索します。別のフォルダーまたは拡張機能を指定する必要がある場合は、上記の特定のオプションを使用する必要があります。
チャンクコンテキスト リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel は、Chunk コンテキストでエクスチェンジ情報を提供します(
MapExchange は以下のように転送されます。
|
key
|
value
|
|---|---|
exchange
|
Exchange 自体。
|
exchange.properties
|
Exchange プロパティー。
|
headers
|
In メッセージのヘッダー。
|
camelContext
|
Camel コンテキスト。
|
request
|
In メッセージ。
|
body
|
In メッセージのボディー。
|
response
|
Out メッセージ(InOut メッセージ交換パターンにのみ有効)。
|
動的テンプレート リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel は 2 つのヘッダーを提供し、テンプレートまたはテンプレートコンテンツ自体に異なるリソースの場所を定義できます。これらのヘッダーのいずれかが設定されている場合、Camel は設定されたエンドポイントでこれを使用します。これにより、ランタイム時に動的テンプレートを指定できます。
|
ヘッダー
|
タイプ
|
説明
|
サポートバージョン
|
|---|---|---|---|
|
ChunkConstants.CHUNK_RESOURCE_URI
|
文字列
|
設定されたエンドポイントの代わりに使用するテンプレートリソースの URI。
|
|
|
ChunkConstants.CHUNK_TEMPLATE
|
文字列
|
設定されたエンドポイントの代わりに使用するテンプレート。
|
|
サンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
たとえば、以下のように使用できます。
from("activemq:My.Queue").
to("chunk:template");
from("activemq:My.Queue").
to("chunk:template");
Chunk テンプレートを使用して InOut メッセージエクスチェンジ(
JMSReplyTo ヘッダーがある)のメッセージの応答を形成するには、以下を実行します。
InOnly を使用してメッセージを消費し、別の宛先に送信する場合は、以下を使用します。
from("activemq:My.Queue").
to("chunk:template").
to("activemq:Another.Queue");
from("activemq:My.Queue").
to("chunk:template").
to("activemq:Another.Queue");
以下のように、ヘッダーを介してコンポーネントを動的に使用するテンプレートを指定できます。
from("direct:in").
setHeader(ChunkConstants.CHUNK_RESOURCE_URI).constant("template").
to("chunk:dummy?allowTemplateFromHeader=true");
from("direct:in").
setHeader(ChunkConstants.CHUNK_RESOURCE_URI).constant("template").
to("chunk:dummy?allowTemplateFromHeader=true");
警告
allowTemplateFromHeader オプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼できないコンテンツまたはユーザー派生コンテンツが含まれる場合、これは最終的に、エンドアプリケーションの確実性と整合性に及ぼす可能性があるため、このオプションを使用してください。
Chunk コンポーネントオプションの例を以下に示します。
from("direct:in").
to("chunk:file_example?themeFolder=template&themeSubfolder=subfolder&extension=chunk");
from("direct:in").
to("chunk:file_example?themeFolder=template&themeSubfolder=subfolder&extension=chunk");
この例では、Chunk コンポーネントは template/subfolder フォルダーの file_example.chunk ファイルを検索します。
電子メールのサンプル リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、注文確認メールに Chunk テンプレートを使用します。メールテンプレートは、以下のように Chunk でレイアウトされます。