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