我知道有一种常见的模式可以在抛出某些异常时停止工作。但是我们允许用户随时停止任何工作。
我有许多微服务,每个微服务运行一个不同的批处理作业。在前面,有一个控制器方法,该方法可以查找所有正在运行的作业,获取执行ID,然后使用JobOperator
发出停止命令。但是执行似乎还在继续。
jobOperator.stop(Long.parseLong(jobExecId));
我所看到的所有示例都仅发出了此命令并更新了JobRepository
。
jobExecution.setEndTime(new Date());
jobExecution.setStatus(BatchStatus.ABANDONED);
jobExecution.setExitStatus(ExitStatus.STOPPED);
jobRepository.update(jobExecution);
还有什么我应该做的吗?
答案 0 :(得分:0)
我认为调用Thread.currentThread().interrupt()
应该是正确的方法。
SB将拦截ThreadStepInterruptionPolicy
中的信号并停止作业。