383.3. Marshal
この例では、Zip ファイル圧縮を使用して通常のテキスト/XML ペイロードを圧縮ペイロードにマーシャリングし、それを MY_QUEUE という ActiveMQ キューに送信します。
from("direct:start") .marshal().zipFile() .to("activemq:queue:MY_QUEUE");
作成された Zip ファイル内の Zip エントリーの名前は、受信した CamelFileName
メッセージヘッダーに基づいています。これは、ファイルコンポーネントによって使用される標準のメッセージヘッダーです。さらに、送信 CamelFileName
メッセージヘッダーは、受信 CamelFileName
メッセージヘッダーの値に ".zip" 接尾辞を付けて自動的に設定されます。たとえば、次のルートで入力ディレクトリーに test.txt という名前のファイルが見つかった場合には、出力は test.txt という名前の単一の Zip エントリーを含む test.txt.zip という名前の Zip ファイルになります。
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");
このルートにより、出力ディレクトリーに report.txt.zip という名前の Zip ファイルが作成され、report.txt という名前の Zip エントリーが 1 つ含まれます。