use*_*636 7 java spring spring-mvc scheduled-tasks
我有一个 Spring-Boot 应用程序,其中一个 bean 每隔大约 1 分钟运行一次计划任务,并且这个 bean 有一个@PreDestroy
方法。
是否有解决方案允许当前正在执行的任务在生命周期到达预销毁阶段之前完成 - 或者至少给定一些时间来完成?
从 Spring Boot 2.1.0 开始,你可以使用这个:
@Bean
TaskSchedulerCustomizer taskSchedulerCustomizer() {
return taskScheduler -> {
taskScheduler.setAwaitTerminationSeconds(60);
taskScheduler.setWaitForTasksToCompleteOnShutdown(true);
};
}
Run Code Online (Sandbox Code Playgroud)
TaskSchedulerCustomizer
将用于修改配置 ThreadPoolTaskScheduler
细节:
小智 5
您需要更新配置ThreadPoolTaskScheduler
。为waitForJobsToCompleteOnShutdown
(method setWaitForTasksToCompleteOnShutdown
)设置 true 。
从文档:
设置是否在关机时等待计划任务完成,不中断正在运行的任务并执行队列中的所有任务。默认为“false”,通过中断正在进行的任务和清除队列立即关闭。如果您希望以更长的关闭阶段为代价完全完成任务,请将此标志切换为“true”。
归档时间: |
|
查看次数: |
6735 次 |
最近记录: |