Apache camel 将apache camel消息类型更改为InOut
据我所知,InOut消息是可以从目的地接收响应的消息 但是,我还没有找到任何关于如何将消息转换为InOut类型以及如何从目的地访问响应的示例 例如,给定如下路线:Apache camel 将apache camel消息类型更改为InOut,apache-camel,Apache Camel,据我所知,InOut消息是可以从目的地接收响应的消息 但是,我还没有找到任何关于如何将消息转换为InOut类型以及如何从目的地访问响应的示例 例如,给定如下路线: from("direct:start").to("smtps://smtp.gmail.com:465?username=user@gmail.com&password=usrpw&to=address@gmail.com") 如何将路由到smtps组件的消息转换为InOut类型 我是否可以期待smtp组件的响应,
from("direct:start").to("smtps://smtp.gmail.com:465?username=user@gmail.com&password=usrpw&to=address@gmail.com")
- 如何将路由到smtps组件的消息转换为InOut类型
- 我是否可以期待smtp组件的响应,例如,指示邮件已成功发送
- 如何访问此响应
from(direct:start)
.to(http://...)
.log(INFO, "${body}")
将记录对http调用的响应
如果您在文档中没有找到好的信息,我强烈建议您检查相关制作人的代码,以了解返回的或可以使用的内容
例如,对于SMTP,我没有发现文档说明正文发生了什么,但代码非常清楚:
public void process(final Exchange exchange) {
ClassLoader tccl = Thread.currentThread().getContextClassLoader();
try {
ClassLoader applicationClassLoader = getEndpoint().getCamelContext().getApplicationContextClassLoader();
if (applicationClassLoader != null) {
Thread.currentThread().setContextClassLoader(applicationClassLoader);
}
MimeMessage mimeMessage;
final Object body = exchange.getIn().getBody();
if (body instanceof MimeMessage) {
// Body is directly a MimeMessage
mimeMessage = (MimeMessage) body;
} else {
// Create a message with exchange data
mimeMessage = new MimeMessage(sender.getSession());
getEndpoint().getBinding().populateMailMessage(getEndpoint(), mimeMessage, exchange);
}
if (LOG.isDebugEnabled()) {
LOG.debug("Sending MimeMessage: {}", MailUtils.dumpMessage(mimeMessage));
}
sender.send(mimeMessage);
// set the message ID for further processing
exchange.getIn().setHeader(MailConstants.MAIL_MESSAGE_ID, mimeMessage.getMessageID());
} catch (MessagingException e) {
exchange.setException(e);
} catch (IOException e) {
exchange.setException(e);
} finally {
Thread.currentThread().setContextClassLoader(tccl);
}
}
您的exchange将有一个带有邮件ID(“CamelMailMessageId”)的标头,如果出现任何消息传递异常,将传播该异常。身体似乎没有被触碰过,即使它没有被触碰。谢谢你的解释