繁体   English   中英

Spring JavaMailSender - 使用会话的最佳方式

[英]Spring JavaMailSender - best way to use session

在Spring JavaMailSender中重用会话的最佳方法是什么?

在消费者从队列中读取消息并根据消息触发电子邮件的情况下,电子邮件将一个接一个地发送。 如果每次都创建一个新会话,那不是一个开销吗? 如果JavaMailSender是单例bean,它是否始终使用相同的会话? 什么是最好的解决方案?

我看到JNDI会话的样本被设置为JavaMailSender bean配置。 我们不支持JNDI,所以这不是一个选择。

如果您使用标准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;
}

不确定从哪里听说为每条消息创建了一个新会话......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM