0
点赞
收藏
分享

微信扫一扫

异步实现邮件发送

问题描述: 在写接口的时候,遇到一个问题,前端要求直接返回结果再去运行其他代码。

问题分析: 因为经费紧张,本次使用的是网易发送邮件,也就是用你的账号给其他人发送邮件这种,这也存在一些问题,就是不能在短时间内大量发送邮件信息,于是我加了一个定时器。

    限制为每半分钟发送一次,后台在接收到前端发送的数组时,数组中的数据每过半分钟才能执行一条,也就是发送给好几个人的邮件,过了半分钟才能给下一个人发送邮件这种情况。

于是这就产生了一个问题,需要等这些定时器都执行完毕才能获取到接口返回的结果。

而且这样也会造成阻塞等待,比较耗时。

问题解决: 加入异步成功解决,即为主进程直接返回一个结果,另一个进程则去执行那个比较耗时的。

具体实现:

    1.在启动类上加上注解@EnableAsync。

2.在service层的方法上加上@Async 注解。

3.在controller层正常调用此方法就行。

分析总结: @Async 注解可以添加到类上,表示该类里面的所有方法都是异步执行,也可以添加到方法上,表示该方法异步执行。

举报

相关推荐

0 条评论