在不关闭连接的情况下在 Apache Camel 中发送批量电子邮件
Send bulk emails in Apache Camel without closing connection
Apache Camel Mail Component是否支持重用 TCP 连接来发送批量电子邮件?
如果不是,是不是feasible/recommendable写自定义org.apache.camel.component.mail.JavaMailSender来做?
我认为使用标准的 camel 邮件组件是不可能的,并且实现 JavaMailSender 也不会为您解决问题。
如果你看看 org.apache.camel.component.mail.MailProducer(2.13.0):
public void process(final Exchange exchange) {
try {
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);
}
}
只有 1 个消息或交换对象 send/handled。
因此,使用您需要的功能实施您自己的 "BulkMailComponent" 可能是适合您的解决方案。
Apache Camel Mail Component是否支持重用 TCP 连接来发送批量电子邮件?
如果不是,是不是feasible/recommendable写自定义org.apache.camel.component.mail.JavaMailSender来做?
我认为使用标准的 camel 邮件组件是不可能的,并且实现 JavaMailSender 也不会为您解决问题。
如果你看看 org.apache.camel.component.mail.MailProducer(2.13.0):
public void process(final Exchange exchange) {
try {
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);
}
}
只有 1 个消息或交换对象 send/handled。 因此,使用您需要的功能实施您自己的 "BulkMailComponent" 可能是适合您的解决方案。