首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电子邮件代码会使java spring MVC中的代码变慢。

电子邮件代码会使java spring MVC中的代码变慢。
EN

Stack Overflow用户
提问于 2011-03-13 15:14:54
回答 4查看 2K关注 0票数 0

我添加了这是我的控制器

代码语言:javascript
复制
@RequestMapping(value = "/persons/add", method = RequestMethod.POST)
        public String add(@Valid @ModelAttribute("personAttribute") Person person,
                BindingResult result) {
        logger.debug("Received request to add new person");


        SimpleMailMessage mailMessage = new SimpleMailMessage();

        mailMessage.setTo("someone@abc.com");
        mailMessage.setSubject("This is the test message for testing gmail smtp server using spring mail");
        mailMessage.setFrom("abc@gmail.com");
        mailMessage.setText("This is the test message for testing gmail smtp server using spring mail. \n" +
                "Thanks \n Regards \n Saurabh ");
        mailSender.send(mailMessage);


        if (result.hasErrors())
                return "hibernate/addpage";
        else
        personService.add(person);

                return "hibernate/addedpage";
    }

NOw按下add按钮后需要5-6秒

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-13 15:58:26

就像David说的,使用异步API。我不建议创建一个新的线程。在这里为每个请求创建一个线程可能意味着创建了许多线程来服务并发请求。最好使用具有有限池大小的线程池执行器,并将执行邮件发送的作业排入队列。Google java executors以及如何在spring中使用它们;有各种实现。这意味着你的请求不会阻塞,它们的执行速度就像你根本没有发送邮件一样快(差不多)。

或者,使用本地邮件服务器-通过运行在本地主机上的邮件服务器发送邮件要快得多,但我建议使用异步方法。然而,如果沿着异步路线走下去,有一些事情需要考虑,比如如何处理邮件发送失败。在错误条件下,您的执行流程不同是很重要的,还是可以安全地忽略它?

票数 2
EN

Stack Overflow用户

发布于 2011-03-13 15:22:40

这是一个问题吗?

您正在同步发送邮件-这可能需要几秒钟的时间。有什么问题吗?

我认为gmail也有可能工作……

票数 1
EN

Stack Overflow用户

发布于 2011-03-13 15:25:08

这可能是意料之中的。向邮件服务器提交邮件消息不是即时的。

如果有问题,可以使用异步API来发送消息(或者启动一个Thread来完成)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5288043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档