首页 > 解决方案 > 如何在 Spring Batch 中强制停止工作?

问题描述

我有一个定期创建工作的 Web 应用程序。这个网络应用程序在服务器上并且工作正常。如果服务器崩溃然后重新启动,则JobExplorer表明该作业仍在运行。但事实上,这项工作永远不会停止,我必须自己停止。为此,我正在尝试使用JobOperator,有趣的是它说它无法停止未运行的作业。

要获取正在运行的作业列表:

for (String jn : jobExplorer.getJobNames())             
   for (JobExecution je : jobExplorer.findRunningJobExecutions(jn)) {
        ...
    }

停止工作:

try {
    jobOperator.stop(je.getId());
} catch (NoSuchJobExecutionException e1) {
    e1.printStackTrace();
} catch (JobExecutionNotRunningException e1) {
    e1.printStackTrace();
}

错误消息是“JobExecution 必须正在运行才能停止”

两者都je.isRunning()返回je.isStopping()true。

标签: javaspringspring-batch

解决方案


推荐阅读