343.3. marshal
在本例中,我们使用 Tar 文件压缩将常规文本/XML 有效负载放入压缩有效负载,并将它发送到名为 MY_QUEUE 的 ActiveMQ 队列。
from("direct:start").marshal().tarFile().to("activemq:queue:MY_QUEUE");
创建 Tar File 中的 Tar 条目的名称基于传入的 CamelFileName
消息标头,这是文件组件使用的标准消息标头。另外,传出 CamelFileName
消息标头会自动设置为传入的 CamelFileName
消息标头的值,带有 ".tar" 后缀。因此,如果以下路由在输入目录中找到名为 "test.txt" 的文件,则输出将是名为 "test.txt.tar" 的 Tar 文件,其中包含一个名为 "test.txt" 的 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" 的 Tar 文件,其中包含一个名为 "report.txt" 的 Tar 条目。