一、前言
邮件自动发送是各种系统不可或缺的功能,例如办公系统会在出现特定状况时向人事部门或技术部门发送告警信息。
Spring框架提供了JavaMailSender接口可以进行简单的邮件发送,我们可以很轻易的使用。此外,邮件发送还需要考虑是否采用异步的方式,如果邮件发送功能是在用户触发某个操作后发生的,使用同步的方式串行执行发邮任务势必会导致业务的阻塞,我们可以使用Spring提供的ThreadPool来实现异步多线程。
二、配置异步任务
- 首先在SpringBootApplication主类下增加注解
@EnableAsync
,以在该项目启用异步功能 - 创建一个异步多线程的配置类,名字随意,但必须加上
@Configuration
注解以将该类作为配置类注册到Spring中 - 在该配置类下声明一个执行器方法,名字随意,但返回值必须为
AsyncTaskExecutor
,且应加上@Bean("AsyncTaskExecutor")
注解以将该方法返回的对象注册到Spring中 - 进行多线程任务的配置,其中核心线程数推荐设为CPU内核数,最大线程数为核心线程数的两倍:
@Configuration
public class ThreadPoolConfig {
@Bean("AsyncTaskExecutor")
public AsyncTaskExecutor taskExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
// 设置核心线程数
executor.setCorePoolSize(2);
// 设置最大线程数
executor.setMaxPoolSize(4);
// 设置队列容量