在Spring JavaMailSender中重用会话的最佳方法是什么?
在消费者从队列中读取消息并根据消息触发电子邮件的情况下,电子邮件将一个接一个地发送。如果每次都创建一个新会话,那不是一个开销吗?如果JavaMailSender是单例bean,它是否始终使用相同的会话?什么是最好的解决方案?
我看到JNDI会话的样本被设置为JavaMailSender bean配置。我们不支持JNDI,所以这不是一个选项。
答案 0 :(得分:0)
如果您对JavaMailSender
使用标准MailSendingMessageHandler
,那么您只需重复使用Session
!
// Check transport connection first...
if (transport == null || !transport.isConnected()) {
...
try {
transport = connectTransport();
}
...
Transport transport = getTransport(getSession());
transport.connect(getHost(), getPort(), username, password);
return transport;
...
public synchronized Session getSession() {
if (this.session == null) {
this.session = Session.getInstance(this.javaMailProperties);
}
return this.session;
}
不确定您从哪里听说为每条消息创建了一个新会话......