第 224 章 MIME Multipart DataFormat
从 Camel 版本 2.17 开始提供
此数据格式,可以将带有附件的 Camel 消息转换为 Camel 消息,包含 MIME-Multipart 消息作为消息正文(无附件)。
这样做的用例是允许用户通过不支持附加的端点发送附件(例如,作为特殊协议实现(例如,通过 HTTP 端点发送 MIME 多部分)或作为隧道解决方案(例如,camel-jms 不支持附件,但通过将附件放入 MIME-Multipart)将消息放入 MIME-Multipart。将其发送到 JMS 队列,从 JMS 队列接收消息并再次接收消息(通过附件发送到消息正文)。
mime-multipart 数据格式的 marshal 选项将带有附件的消息转换为 MIME-Multipart 消息。如果参数 "multipartWithoutAttachment" 设置为 true,它将在没有附加信息的情况下进行 marshal 信息,如果该参数被设置为 false,它将只保留消息。
mulitpart 的 MIME 标头作为 "MIME-Version" 和 "Content-Type" 设置为消息。如果参数 "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 多部分 dataformat 支持 6 个选项,如下所列。
Name | 默认值 | Java 类型 | 描述 |
---|---|---|---|
multipartSubType |
|
| 指定 MIME 多部分的子类型。默认为 mixed。 |
multipartWithoutAttachment |
|
| 定义没有附加的消息是否也会被放入 MIME Multipart 中(只有一个正文部分)。默认值为 false。 |
headersInline |
|
| 定义 MIME-Multipart 标头是消息正文(true)的一部分,或设置为 Camel 标头(false)。默认值为 false。 |
includeHeaders |
| 定义将哪些 Camel 标头作为 MIME 标头包含在 MIME 多部分的正则表达式。这只有在 headersInline 设为 true 时才可以正常工作。默认为不包含标头 | |
binaryContent |
|
| 定义 MIME 多部分的内容是否为二进制(true)或 Base-64 encoded (false) Default 是否为 false。 |
contentTypeHeader |
|
| 如果数据格式可以这样做,则数据格式是否应使用 data 格式的类型设置 Content-Type 标头。例如,用于数据格式的 application/xml 放入 XML 或用于数据格式的 application/json,如 JSon 等。 |