首页 文章

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

提问于
浏览
0

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

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

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

1 回答

  • 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 的步骤将始终重新运行 .

相关问题