user5974438
user5974438

Reputation: 31

How to stop and resume a spring batch job

Goal : I am using spring batch for data processing and I want to have an option to stop/resume (where it left off).

Issue: I am able to send a stop signal to a running job and it gets stopped successfully. But when I try to send start signal to same job its creating a new instance of the job and starts as a fresh job.

My question is how can we achieve a resume functionality for a stopped job in spring batch.

Upvotes: 3

Views: 4610

Answers (1)

Artefacto
Artefacto

Reputation: 97835

You just have to run it with the same parameters. Just make sure you haven't marked the job as non-restarted and that you're not using RunIdIncrementer or similar to automatically generate unique job parameters.

See for instance, this example. After the first run, we have:

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

And after the second:

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

Note that stopped steps will be re-executed. If you're using chunk-oriented steps, make sure that at least the ItemReader implements ItemStream (and does it with the correct semantics).

Steps marked with allowRestartWithComplete will always be re-run.

Upvotes: 4

Related Questions