手上有个项目需要通过SMTP协议由第三方向目标邮箱发送邮件,但在向第三方发送请求的耗时实在太长,需要10秒左右的时间。由于是单方请求不需要回调,所以决定用没有返回的异步任务解决该问题。下面记录问题的解决过程。
1、在Application启动类上加上启用异步的注解@EnableAsync
2、编写Config配置类加上@Configuration作为配置类注册到springboot中,声明一个异步任务执行器类AsyncTaskExecutor加上@Bean注解注册到springboot中。
3、编写异步任务类并实现Serializable接口,在需要异步调用的方法上加上@Async的异步注解
4、在调用异步任务对象的业务类上加上@Scope(“prototype”)注解,使该业务类在实例化时候变成多例模式
5、经过测试,接口本身的调用时间不受异步任务影响,降到了38毫秒。
6、成功收到邮件