如何停止和恢复弹簧批处理作业

时间:2016-02-24 12:28:27

标签: spring-batch spring-batch-admin

目标:我使用spring批处理进行数据处理,我希望有一个停止/恢复选项(它停止的地方)。

问题:我能够向正在运行的作业发送停止信号并成功停止。但是,当我尝试将启动信号发送到同一个工作时,它会创建一个新的工作实例并从一个新工作开始。

我的问题是如何在春季批次中为停止的作业实现恢复功能。

1 个答案:

答案 0 :(得分:1)

您只需使用相同的参数运行它。只需确保您没有将作业标记为未重新启动,并且您未使用RunIdIncrementer或类似内容自动生成唯一作业参数。

例如,见this example。第一次运行后,我们有:

INFO: Job: [SimpleJob: [name=myJob]] completed with the following parameters: [{}] and the following status: [STOPPED]
Status is: STOPPED, job execution id 0
  #1 step1 COMPLETED
  #2 step2 STOPPED

在第二次之后:

INFO: Job: [SimpleJob: [name=myJob]] completed with the following parameters: [{}] and the following status: [COMPLETED]
Status is: COMPLETED, job execution id 1
  #3 step2 COMPLETED
  #4 step3 COMPLETED

请注意,已停止的步骤将被重新执行。如果您正在使用面向块的步骤,请确保至少ItemReader实现ItemStream(并使用正确的语义执行此操作)。

标有allowRestartWithComplete的步骤将始终重新运行。