第 224 章 MIME 多部分数据格式
从 Camel 版本 2.17 开始提供
此数据格式可以将带有附件的 Camel 消息转换为带有 MIME-Multipart 消息作为消息正文(没有附件)的 Camel 消息。
这种情况的用例是允许用户通过不支持附件的端点发送附件,作为特殊协议实现(例如,通过 HTTP 端点发送 MIME 多部分),或作为一种隧道解决方案(例如,camel-jms 不支持附件),而是将附件发送到 MIME-Multipart, 将它发送到 JMS 队列,从 JMS 队列接收消息,并再次接收该消息(传入带有附件的消息正文)。
mime-multipart 数据格式的 marshal 选项将带有附件的消息转换为 MIME 多部分消息。如果参数 "multipartWithoutAttachment" 设为 true,它也会在没有附件的情况下将 marshal 消息放入一个部分,如果参数设置为 false,它将单独保留该消息。
mulitpart 的 MIME 标头是 "MIME-Version" 和 "Content-Type" 设置为消息的 camel 标头。如果参数 "headersInline" 设为 true,它也会在任何情况下创建一个 MIME 多部分信息。
另外,多部分的 MIME 标头作为消息正文的一部分编写,而不是作为 camel 标头编写。
mime-multipart 数据格式的 unmarshal 选项会将 MIME-Multipart 消息转换为带有附件的 camel 消息,并只保留其他消息。MIME-Multipart 消息的 MIME-Headers 必须设置为 Camel 标头。只有 "Content-Type" 标头被设置为 "multipart" 类型时才会发生 unmarshalling。如果选项 "headersInline" 设为 true,则正文始终被解析为 MIME 消息。因此,如果消息正文是流,流缓存没有启用,则消息正文中实际不是 MIME 标头的消息正文将被空消息替换。直到 Camel 版本 2.17.1,无论正文类型和流缓存设置是什么,都会出现所有不包含 MIME 多部分消息的消息。
224.1. 选项
MIME 多部分格式支持 6 个选项,如下所列。
名称 | 默认值 | Java 类型 | 描述 |
---|---|---|---|
multipartSubType |
|
| 指定 MIME 多部分的子类型。默认为混合的。 |
multipartWithoutAttachment |
|
| 定义消息是否也被分成一个 MIME 多部分(只有一个正文部分)。默认值为 false。 |
headersInline |
|
| 定义 MIME-Multipart 标头是消息正文(true)的一部分,或者设置为 Camel 标头(false)。默认值为 false。 |
includeHeaders |
| 定义哪些 Camel 标头也包含在 MIME 多部分的正则表达式。这只有在 headersInline 设置为 true 时才可以正常工作。默认为不包含标头 | |
binaryContent |
|
| 定义 MIME 多部分的内容是否为二进制(true)还是 Base-64 编码(false)默认值。 |
contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该使用 data 格式的类型设置 Content-Type 标头。例如,用于数据格式到 XML 的 application/xml 或用于数据格式的 application/json 发送到 JSon 等。 |