第21章 Chunk


チャンクコンポーネント

Camel 2.15 以降で利用可能
chunk: コンポーネントを使用すると、Chunk テンプレートを使用してメッセージを処理できます。これは、Templating を使用してリクエストの応答を生成する場合に理想的です。
Maven ユーザーは、このコンポーネントの以下の依存関係を pom.xml に追加する必要があります。
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-chunk</artifactId>
<version>x.x.x</version> <!-- use the same version as your Camel core version -->
</dependency>
Copy to Clipboard Toggle word wrap

URI 形式

chunk:templateName[?options]
Copy to Clipboard Toggle word wrap
templateName は、呼び出すテンプレートのクラスパスローカル URI に置き換えます。
以下の形式で URI にクエリーオプションを追加できます。 ?option=value&option=value&...

オプション

Expand
オプション
デフォルト
説明
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 は以下のように転送されます。
Expand
key
value
exchange
Exchange 自体。
exchange.properties
Exchange プロパティー。
headers
In メッセージのヘッダー。
camelContext
Camel コンテキスト。
request
In メッセージ。
body
In メッセージのボディー。
response
Out メッセージ(InOut メッセージ交換パターンにのみ有効)。

動的テンプレート

Camel は 2 つのヘッダーを提供し、テンプレートまたはテンプレートコンテンツ自体に異なるリソースの場所を定義できます。これらのヘッダーのいずれかが設定されている場合、Camel は設定されたエンドポイントでこれを使用します。これにより、ランタイム時に動的テンプレートを指定できます。
Expand
ヘッダー
タイプ
説明
サポートバージョン
ChunkConstants.CHUNK_RESOURCE_URI
文字列
設定されたエンドポイントの代わりに使用するテンプレートリソースの URI。
ChunkConstants.CHUNK_TEMPLATE
文字列
設定されたエンドポイントの代わりに使用するテンプレート。

サンプル

たとえば、以下のように使用できます。
from("activemq:My.Queue").
to("chunk:template");
Copy to Clipboard Toggle word wrap
Chunk テンプレートを使用して InOut メッセージエクスチェンジ( JMSReplyTo ヘッダーがある)のメッセージの応答を形成するには、以下を実行します。
InOnly を使用してメッセージを消費し、別の宛先に送信する場合は、以下を使用します。
from("activemq:My.Queue").
to("chunk:template").
to("activemq:Another.Queue");
Copy to Clipboard Toggle word wrap
以下のように、ヘッダーを介してコンポーネントを動的に使用するテンプレートを指定できます。
from("direct:in").
setHeader(ChunkConstants.CHUNK_RESOURCE_URI).constant("template").
to("chunk:dummy?allowTemplateFromHeader=true");
Copy to Clipboard Toggle word wrap
警告
allowTemplateFromHeader オプションを有効にすると、セキュリティーの問題があります。たとえば、ヘッダーに信頼できないコンテンツまたはユーザー派生コンテンツが含まれる場合、これは最終的に、エンドアプリケーションの確実性と整合性に及ぼす可能性があるため、このオプションを使用してください。
Chunk コンポーネントオプションの例を以下に示します。
from("direct:in").
to("chunk:file_example?themeFolder=template&themeSubfolder=subfolder&extension=chunk");
Copy to Clipboard Toggle word wrap
この例では、Chunk コンポーネントは template/subfolder フォルダーの file_example.chunk ファイルを検索します。

電子メールのサンプル

この例では、注文確認メールに Chunk テンプレートを使用します。メールテンプレートは、以下のように Chunk でレイアウトされます。
Dear {$headers.lastName}, {$headers.firstName}

Thanks for the order of {$headers.item}.

Regards Camel Riders Bookstore
{$body}
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat