spring-计划任务-正常关机


问题内容

我有一个Spring-Boot应用程序,其中一个Bean以大约1分钟的间隔运行预定的任务,并且这个Bean有一个@PreDestroy方法。

是否存在一种解决方案,可以在生命周期达到破坏前的阶段之前允许当前正在执行的任务完成-或至少需要一定时间才能完成?


问题答案:

您需要更新配置ThreadPoolTaskScheduler。将waitForJobsToCompleteOnShutdown(方法setWaitForTasksToCompleteOnShutdown)设置为true

从文档:

设置是否等待计划的任务在关闭时完成,而不中断正在运行的任务并执行队列中的所有任务。默认值为“
false”,通过中断正在进行的任务并清除队列立即关闭。如果您希望完全完成的任务而又花费较长的关闭阶段,则将此标志切换为“ true”。