栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

改善通过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();

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498615.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号