springboot threadpooltaskscheduler不会在关闭前等待我的任务完成

mkh04yzy  于 2021-07-23  发布在  Java
关注(0)|答案(0)|浏览(292)

我创建了一个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) 我已经处理好了。
非常感谢你的帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题