package com.mes.config;
|
|
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Configuration;
|
import org.springframework.scheduling.annotation.SchedulingConfigurer;
|
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
|
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
|
|
import java.util.concurrent.ThreadPoolExecutor;
|
|
/**
|
* @Author : zhoush
|
* @Date: 2025/8/29 14:02
|
* @Description:
|
*/
|
@Configuration
|
public class SchedulerConfig implements SchedulingConfigurer {
|
|
@Override
|
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
|
taskRegistrar.setTaskScheduler(myTaskScheduler());
|
}
|
|
@Bean(destroyMethod = "shutdown")
|
public ThreadPoolTaskScheduler myTaskScheduler() {
|
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
// 设置线程池大小,根据你的定时任务数量调整
|
scheduler.setPoolSize(5);
|
// 设置线程名前缀,便于日志排查
|
scheduler.setThreadNamePrefix("mes-");
|
// 设置拒绝策略:如果所有线程都在忙,新任务由调用者线程直接执行(可能会阻塞调用者)
|
// scheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
|
// 更推荐的策略:如果队列满了,丢弃最老的任务并记录日志,而不是阻塞
|
scheduler.setRejectedExecutionHandler(new ThreadPoolExecutor.DiscardOldestPolicy());
|
// 设置等待所有任务完成后关闭,优雅停机
|
scheduler.setWaitForTasksToCompleteOnShutdown(true);
|
scheduler.setAwaitTerminationSeconds(60);
|
return scheduler;
|
}
|
}
|