如何在 Camel 3.0 上添加附件

Bur*_*ner 1 java apache-camel apache-camel-mail

在 Camel 2.x 中,我可以向消息添加附件,例如:

exchange.getOut().addAttachment("LogFile.log.gz", new DataHandler(Base64.decodeBase64(FileContentBase64),"application/x-gzip"));
Run Code Online (Sandbox Code Playgroud)

但在 Camel 3.0 中这是不可能的。我像迁移指南所说的那样更改我的代码:

exchange.getMessage().addAttachment("LogFile.log.gz", new DataHandler(Base64.decodeBase64(FileContentBase64),"application/x-gzip"));
Run Code Online (Sandbox Code Playgroud)

但它不起作用。这也不是:

exchange.getIn().addAttachment("LogFile.log.gz", new DataHandler(Base64.decodeBase64(FileContentBase64),"application/x-gzip"));
Run Code Online (Sandbox Code Playgroud)

有一个想法,来解决这个问题。

我想通过电子邮件发送此附件。

hc_*_*dev 7

Camel版本 3进行了大量模块化。所以附件 API被提取出来并且必须以不同的方式使用,参见Camel 3 Migration Guide

附件API(javax.activation中)已被移出org.apache.camel.message到扩展org.apache.camel.attachment.AttachmentMessage骆驼附件JAR。

要使用此 API,您可以通过getMessageExchange上的方法获取它:

AttachmentMessage am = exchange.getMessage(AttachmentMessage.class); am.addAttachment("myAtt", new DataHandler(...)); 
Run Code Online (Sandbox Code Playgroud)