首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >春季计划的任务-优雅关闭

春季计划的任务-优雅关闭
EN

Stack Overflow用户
提问于 2017-04-27 17:23:03
回答 3查看 10.7K关注 0票数 8

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

是否有解决方案允许当前正在执行的任务在生命周期到达预销毁阶段之前完成--或者至少有一段时间来完成?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-27 21:19:09

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

来自文件:

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

票数 5
EN

Stack Overflow用户

发布于 2019-07-22 15:28:10

从SpringBoot2.1.0开始,您可以使用以下内容:

代码语言:javascript
复制
@Bean
TaskSchedulerCustomizer taskSchedulerCustomizer() {
    return taskScheduler -> {
        taskScheduler.setAwaitTerminationSeconds(60);
        taskScheduler.setWaitForTasksToCompleteOnShutdown(true);
    };
}

TaskSchedulerCustomizer将用于修改配置的ThreadPoolTaskScheduler

详细信息:

  1. ExecutorConfigurationSupport
  2. TaskSchedulerCustomizer
票数 16
EN

Stack Overflow用户

发布于 2017-04-28 07:09:21

@Matej是对的。像这样的事情应该能起作用

代码语言:javascript
复制
 @Bean
  public ThreadPoolTaskScheduler setSchedulerToWait(ThreadPoolTaskScheduler threadPoolTaskScheduler){
   threadPoolTaskScheduler.setWaitForTasksToCompleteOnShutdown(true);
   return threadPoolTaskScheduler;
 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43664259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档