运行 Spring 引导中的调度程序正在生成 Spring 引导应用程序上下文外部的进程
Running scheduler in Spring boot is spawning a process external to Spring boot application context
我正在安排 运行 以固定速率启动 Spring 的任务。我用来安排任务的功能如下:
private void scheduleTask(Store store, int frequency) {
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Runnable task = store::scan;
scheduler.scheduleAtFixedRate(task, 0, frequency, TimeUnit.MILLISECONDS);
}
这工作正常,但如果在应用程序启动时出现异常,应用程序应在异常时退出。发生的事情是我在日志中收到异常和消息“应用程序无法启动”,但看起来调度程序显示仍然 运行ning 尽管看起来只有计划的线程仍然 运行宁.
关于如何在 Spring 引导应用程序中正确安排异步任务的任何提示?我尝试了 @Scheduled 注释,但它根本没有 运行。
@Scheduled
应该可以。您是否将 @EnabledScheduling
注释添加到 @Configuration
或 @SpringBootApplication
? Scheduling Getting Started 详细解释。
关于 scheduleTask
方法:它叫什么?它是在 Spring 上下文之外开始的吗?如果是,那么 Spring 不会阻止它。你必须照顾生命周期。
您应该尝试使用 @Scheduled
,因为它将为您管理线程 pools/executors,大多数人会发现它更容易理解。
我正在安排 运行 以固定速率启动 Spring 的任务。我用来安排任务的功能如下:
private void scheduleTask(Store store, int frequency) {
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Runnable task = store::scan;
scheduler.scheduleAtFixedRate(task, 0, frequency, TimeUnit.MILLISECONDS);
}
这工作正常,但如果在应用程序启动时出现异常,应用程序应在异常时退出。发生的事情是我在日志中收到异常和消息“应用程序无法启动”,但看起来调度程序显示仍然 运行ning 尽管看起来只有计划的线程仍然 运行宁.
关于如何在 Spring 引导应用程序中正确安排异步任务的任何提示?我尝试了 @Scheduled 注释,但它根本没有 运行。
@Scheduled
应该可以。您是否将 @EnabledScheduling
注释添加到 @Configuration
或 @SpringBootApplication
? Scheduling Getting Started 详细解释。
关于 scheduleTask
方法:它叫什么?它是在 Spring 上下文之外开始的吗?如果是,那么 Spring 不会阻止它。你必须照顾生命周期。
您应该尝试使用 @Scheduled
,因为它将为您管理线程 pools/executors,大多数人会发现它更容易理解。