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

时间:2016-04-26 13:36:23

标签: spring spring-integration mail-server

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

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

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

1 个答案:

答案 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;
}

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