package com.mydreamjob.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; /** * 异步任务配置:简历导出等耗时任务使用独立线程池,不阻塞请求线程。 */ @Configuration @EnableAsync public class AsyncConfig { @Bean(name = "resumeExportExecutor") public Executor resumeExportExecutor( @Value("${app.async.resume-export.core-pool-size:2}") int corePoolSize, @Value("${app.async.resume-export.max-pool-size:4}") int maxPoolSize, @Value("${app.async.resume-export.queue-capacity:100}") int queueCapacity) { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.setThreadNamePrefix("resume-export-"); executor.initialize(); return executor; } @Bean(name = "dataExportExecutor") public Executor dataExportExecutor( @Value("${app.async.data-export.core-pool-size:2}") int corePoolSize, @Value("${app.async.data-export.max-pool-size:4}") int maxPoolSize, @Value("${app.async.data-export.queue-capacity:100}") int queueCapacity) { ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); executor.setCorePoolSize(corePoolSize); executor.setMaxPoolSize(maxPoolSize); executor.setQueueCapacity(queueCapacity); executor.setThreadNamePrefix("data-export-"); executor.initialize(); return executor; } }