问题描述
我有一个 Spring-Boot 应用程序,其中一个 bean 每隔大约 1 分钟运行一次计划任务,并且这个 bean 有一个 @PreDestroy
方法.
I have a Spring-Boot application with a bean running a scheduled task at about 1 minute intervals, and this bean has a @PreDestroy
method.
是否有解决方案允许当前正在执行的任务在生命周期到达预销毁阶段之前完成 - 或者至少给定一些时间来完成?
Is there a solution for allowing a task which is currently being executed to complete - or at least given some time to complete - before the life cycle reaches the pre-destroy phase?
推荐答案
您需要更新ThreadPoolTaskScheduler
的配置.为 waitForJobsToCompleteOnShutdown
设置 true(方法 setWaitForTasksToCompleteOnShutdown
).
You need update configuration of ThreadPoolTaskScheduler
. Set true for waitForJobsToCompleteOnShutdown
(method setWaitForTasksToCompleteOnShutdown
).
来自文档:
设置是否在关机时等待计划任务完成,不中断正在运行的任务并执行队列中的所有任务.默认为false",通过中断正在进行的任务和清除队列立即关闭.如果您希望以更长的关闭阶段为代价来完全完成任务,请将此标志切换为true".
这篇关于Spring - 计划任务 - 正常关机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!