目标:我使用spring批处理进行数据处理,我希望有一个停止/恢复选项(它停止的地方)。
问题:我能够向正在运行的作业发送停止信号并成功停止。但是,当我尝试将启动信号发送到同一个工作时,它会创建一个新的工作实例并从一个新工作开始。
我的问题是如何在春季批次中为停止的作业实现恢复功能。
答案 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
的步骤将始终重新运行。