65.2. Marshal
この例では、Zip ファイル圧縮を使用して圧縮されたペイロードに通常のテキスト/XML ペイロードをマーシャリングし、MY_QUEUE という ActiveMQ キューに送信します。
from("direct:start")
.marshal().zipFile()
.to("activemq:queue:MY_QUEUE");
from("direct:start")
.marshal().zipFile()
.to("activemq:queue:MY_QUEUE");
作成された Zip ファイル内の Zip エントリーの名前は、受信 CamelFileName メッセージヘッダーに基づいています。これは、ファイルコンポーネントによって使用される標準メッセージヘッダーです。さらに、発信 CamelFileName メッセージヘッダーは、.zip 接尾辞が付いた受信 CamelFileName メッセージヘッダーの値に自動的に設定されます。たとえば、以下のルートが入力ディレクトリーで test.txt という名前のファイルを見つけると、"test.txt" という名前の単一の Zip エントリーを含む "test.txt.zip" という名前の Zip ファイルが出力されます。
from("file:input/directory?antInclude=*/.txt")
.marshal().zipFile()
.to("file:output/directory");
from("file:input/directory?antInclude=*/.txt")
.marshal().zipFile()
.to("file:output/directory");
受信 CamelFileName メッセージヘッダーがない場合(たとえば、ファイルコンポーネントがコンシューマーではない場合)、メッセージ ID はデフォルトで使用されます。メッセージ ID は通常一意の生成 ID であるため、ID-MACHINENAME-2443-1211718892437-1-0.zip などのファイル名で終了します。この動作を上書きする場合は、ルートに CamelFileName ヘッダーの値を明示的に設定できます。
from("direct:start")
.setHeader(Exchange.FILE_NAME, constant("report.txt"))
.marshal().zipFile()
.to("file:output/directory");
from("direct:start")
.setHeader(Exchange.FILE_NAME, constant("report.txt"))
.marshal().zipFile()
.to("file:output/directory");
このルートにより、"report.txt" という名前の単一の Zip エントリーが含まれる "report.txt.zip" という名前の Zip ファイルが生成されます。