改善通过Spring邮件发送批量电子邮件的性能

改善通过Spring邮件发送批量电子邮件的性能,第1张

改善通过Spring邮件发送批量电子邮件的性能

恕我直言,可以改进发送邮件本身的过程,因为当前,您为每条消息打开到邮件服务器的新连接。您可以通过使用批量发送来改进它。

Spring

MailSender
接口本机支持发送一系列消息,而不是单个消息,因此您不必显式处理JavaMail
Session。您可以简单地修改实际以这种方式发送邮件的类

int batchSize = 16; // for example, adjust it to you needsMimeMessage[] messages = new MimeMessage[batchSize];int messageIndex = 0;public void sendMail(String msgFrom, String body) {    // prepare MimeMessage    messages[messageIndex++] = email;    if (messagesIndex == batchSize) {        mailSender.send(messages);        messageIndex = 0;    }public void sendLastMails() {    if (messageIndex > 0) {        MimeMessage[] lastMessages = new MimeMessage[messageIndex];        for (int i =0; i<messageIndex; i++) { lastMessages[i] = messages[i];    }    mailSender.send(lastMessages);}

编辑:

sendLastMails
方法可以在几个地方调用。首先, 必须
在单例bean的destroy方法中调用它,以确保在应用程序关闭时不会忘记任何消息。如果该类发送邮件是一个singleton
bean,它足以声明destroy方法为bean
sendLastMail
,或调用它。

然后,根据您自己的业务规则,可能会在发送 一批 邮件后调用它。典型用法:在您的示例中,您有

testMap
。您应该这样重写它:

    for (Map.Entry<String, List<values>> entry : testMap .entrySet()) {        ...        mail.sendMail( msgFrom,body); // call my sendMail function in another class    }    mail.sendLastMails();

现在由您决定是否可以进行此改进,还是应该外包。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5490736.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存