62.2. 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" 的 Zip 文件,其中包含一个名为 "test.txt" 的单个 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 条目。