我创建了一个springboot2.4.2应用程序,它有几个长时间运行的任务,这些任务在运行时不应该终止。
我对调度程序的定义如下:
@Configuration
public class SchedulerConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(10);
scheduler.setThreadNamePrefix("my-scheduled-task-pool ");
scheduler.setAwaitTerminationSeconds(30);
scheduler.setWaitForTasksToCompleteOnShutdown(true);
scheduler.initialize();
taskRegistrar.setTaskScheduler(scheduler);
}
}
然后我在一个单独的包中有一个@service类,它包含如下方法:
@Scheduled(fixedDelay = 5000)
public void myTask() {
someLongRunningTask();
System.out.println("Finished Task")
}
当我通过在终端中执行ctrl+c或调用kill-15{$pid}来终止程序时,spring会在mytask()方法完成之前关闭。
有没有一种方法可以强制spring在关闭之前总是等待所有任务完成?我以为 scheduler.setWaitForTasksToCompleteOnShutdown(true)
我已经处理好了。
非常感谢你的帮助
暂无答案!
目前还没有任何答案,快来回答吧!