COMPLETED Spring Batch作业重新启动是否正常?

根据Spring批处理JobOperator类的 restart(executionId) 文档,

https://docs.spring.io/spring-batch/4.0.x/api/org/springframework/batch/core/launch/JobOperator.html#restart-long-

重新启动失败或停止的JobExecution . 如果提供的ID不存在或与正常情况下已成功完成的JobInstance相对应,则会发生异常 .

我正在尝试使用 executionId 重新启动 COMPLETED 作业 . JobOperator 类能够重新启动批处理作业,即使它是 COMPLETED . 我希望它会抛出异常,正如文档所说 . 这种行为是正常的还是我遗漏了什么?

回答(1)

2 years ago

这实际上取决于 .

  • 你应该使用 SimpleJobRepository

  • 你应该看看不是ExitStatus,而是 BatchStatus . ExitStatus是补充结果

  • 检查您是否有工作的识别参数

if (execution.getJobParameters().getParameters().size() > 0 && (status == BatchStatus.COMPLETED || status == BatchStatus.ABANDONED)) {
  throw new JobInstanceAlreadyCompleteException(
                    "A job instance already exists and is complete for parameters=" + jobParameters
                    + ".  If you want to run this job again, change the parameters.");
}