384.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" 的 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 条目。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.