93.16. 如何使用附加分割邮件
在这个示例中,我们使用可能有多个附件的邮件。我们需要做的是每个附件使用 Splitter EIP,以单独处理附件。例如,如果邮件邮件有 5 个附件,我们希望 Splitter 处理五个消息,每个消息都有一个附件。要做到这一点,我们需要向 Splitter 提供自定义表达式,其中我们提供一个 List<Message>,其中包含带有单个附件的五个信息。
代码在 camel-mail 组件中的 Camel 2.10 以后提供。代码位于类中: org.apache.camel.component.mail.SplitAttachmentsExpression,您可以在 此处的 源代码中找到。
在 Camel 路由中,您需要在路由中使用此 Expression,如下所示:
如果使用 XML DSL,则需要在 Splitter 中声明一个方法调用表达式,如下所示
<split> <method beanType="org.apache.camel.component.mail.SplitAttachmentsExpression"/> <to uri="mock:split"/> </split>
<split>
<method beanType="org.apache.camel.component.mail.SplitAttachmentsExpression"/>
<to uri="mock:split"/>
</split>
您还可以将附件分成 byte[] 以存储为消息正文。这可以通过创建带有布尔值 true 的表达式来完成。
SplitAttachmentsExpression split = SplitAttachmentsExpression(true);
SplitAttachmentsExpression split = SplitAttachmentsExpression(true);
然后,使用带有 splitter EIP 的表达式。