第 223 章 MIME 多部件数据格式
作为 Camel 2.17 版提供
此数据格式可以将带有附件的 Camel 消息转换为 Camel 消息,以将 MIME-Multipart 消息作为消息正文(无附件)。
这种情况的用例是让用户通过不支持附加的端点(例如,作为特殊协议实施)发送 MIME-multipart (通过 HTTP 端点发送 MIME-multipart),或者作为一种隧道解决方案(例如 camel-jms)不支持附件,而是通过附件(通过 HTTP 端点向 MIME)发送 MIME-multipart,或作为一种隧道解决方案(例如,因为 camel-jms 不支持附件),但通过附件发送 MIME-multipart,或作为一种隧道解决方案(例如 camel-jms)不支持附加附件,而是通过附件(通过 HTTP 端点发送 MIME-multipart),或作为一种隧道解决方案(例如 camel-jms)支持附件,而是通过附件(通过 HTTP 端点发送 MIME),或作为一种隧道解决方案(例如 camel-jms-jms)支持附件,而是通过 HTTP 端点发送 MIME-multipart,或作为一种隧道解决方案(例如 camel-jms)不支持附件,但通过 HTTP 端点发送 MIME-multipart,或作为一种隧道解决方案(例如 camel-jms)不支持附加内容,而是通过附件(通过 HTTP 端点发送 MIME)或作为隧道解决方案(例如 camel-jms)不支持附加附件,但通过附件将消息聚合到 MIME/Multi-Multippart 发送到 JMS 队列,从 JMS 队列接收消息并再次进行恢复(与附件相关的消息正文)。
mime-multipart 数据格式的 marshal 选项会将带有附件的消息转换为 MIME-Multipart 消息。如果将参数 "multipartWithoutAttachment" 设为 true,它还会在不附加单个部分的情况下将消息过滤至多部分消息,如果 参数设为 false,它将仅保留该消息。
mulitpart 的 MIME 标头设置为 "MIME-Version",并将 "Content-Type" 设置为 camel 标头到邮件。如果将参数 "headersInline" 设为 true,它也会在任何情况下创建一个 MIME 多部件信息。
另外,多部分的 MIME 标头作为邮件正文的一部分编写,而不是作为 camel 标头。
mime-multipart 数据格式的 unmarshal 选项会将 MIME-Multipart 消息转换为带有附件消息的 camel 消息,并单独保留其他消息。MIME-Multipart 消息的 MIME 标头必须设置为 Camel 标头。只有在将 "Content-Type" 标头设置为"multipart"类型时,才会进行解压缩。如果选项"headersInline"设为 true,则正文将始终解析为 MIME 消息。如果消息正文是流,并且未启用流缓存,则消息正文中实际上不是带有 MIME 标头的 MIME 消息。最多 Camel 版本 2.17.1 时将发生所有不包含 MIME 多部件消息的消息正文,而不考虑正文类型和流缓存设置。
223.1. 选项
MIME 多部件数据格式支持 6 选项,它们如下所列。
名称 | 默认 | Java 类型 | 描述 |
---|---|---|---|
multipartSubType |
|
| 指定 MIME 多部件的子类型。默认为混合使用。 |
multipartWithoutAttachment |
|
| 定义没有附加的消息是否也被放入 MIME 多部件(仅含有一个正文部分)。默认为 false。 |
headersInline |
|
| 定义 MIME-Multipart 标头是邮件正文的一部分(true)还是设置为 Camel 标头(false)。默认为 false。 |
includeHeaders |
| 定义哪些 Camel 标头也作为 MIME 多部件包含的正则表达式。只有将 headerInline 设置为 true 时才可以正常工作。默认为不包含任何标头 | |
binaryContent |
|
| 定义 MIME 多部分二进制部分的内容是否为二进制(true)还是 Base-64 编码(false)默认是否为 false。 |
contentTypeHeader |
|
| 如果数据格式能够这样做,则数据格式是否应该以 data 格式设置 Content-Type 标头。例如,用于数据格式的 application/xml (数据格式)或 application/json 用于数据格式 marshalling to JSon etc。 |