gpt4 book ai didi

java - Spring mvc 以非阻塞方式发送邮件

转载 作者:搜寻专家 更新时间:2023-10-31 20:21:01 32 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序在某些情况下会发送邮件。例如;

当用户更新他的电子邮件时,会向用户发送一封激活邮件以验证新的电子邮件地址。这是一段代码;

............
if (!user.getEmail().equals(email)) {
user.setEmailTemp(email);
Map map = new HashMap();
map.put("name", user.getName() + " " + user.getSurname());
map.put("url", "http://activationLink");
mailService.sendMail(map, "email-activation");
}
return view;

我的问题是响应时间因电子邮件发送而变长。有什么方法可以像非阻塞方式一样发送电子邮件吗?例如邮件发送在后台执行,代码继续运行

提前致谢

最佳答案

您可以使用 Spring 设置异步方法以在单独的线程中运行。

@Service
public class EmailAsyncService {
...
@Autowired
private MailService mailService;

@Async
public void sendEmail(User user, String email) {
if (!user.getEmail().equals(email)) {
user.setEmailTemp(email);
Map map = new HashMap();
map.put("name", user.getName() + " " + user.getSurname());
map.put("url", "http://activationLink");
mailService.sendMail(map, "email-activation");
}
}
}

我在这里对您的模型做了假设,但假设您可以传递发送邮件的方法所需的所有参数。如果设置正确,这个 bean 将被创建为代理,调用 @Async 注释的方法将在不同的线程中执行它。

 @Autowired
private EmailAsyncService asyncService;

... // ex: in controller
asyncService.sendEmail(user, email); // the code in this method will be executed in a separate thread (you're calling it on a proxy)
return view; // returns right away

The Spring doc should be enough to help you set it up.

关于java - Spring mvc 以非阻塞方式发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18087573/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com