无论执行什么步骤,如何停止Spring Batch作业

时间:2019-11-21 19:59:48

标签: spring-batch

我知道有一种常见的模式可以在抛出某些异常时停止工作。但是我们允许用户随时停止任何工作。

我有许多微服务,每个微服务运行一个不同的批处理作业。在前面,有一个控制器方法,该方法可以查找所有正在运行的作业,获取执行ID,然后使用JobOperator发出停止命令。但是执行似乎还在继续。

jobOperator.stop(Long.parseLong(jobExecId));

我所看到的所有示例都仅发出了此命令并更新了JobRepository

    jobExecution.setEndTime(new Date());
    jobExecution.setStatus(BatchStatus.ABANDONED);
    jobExecution.setExitStatus(ExitStatus.STOPPED);
    jobRepository.update(jobExecution);

还有什么我应该做的吗?

1 个答案:

答案 0 :(得分:0)

我认为调用Thread.currentThread().interrupt()应该是正确的方法。 SB将拦截ThreadStepInterruptionPolicy中的信号并停止作业。