Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 941
user5974438 Avatar asked Dec 21 '25 04:12

user5974438


1 Answers

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.

like image 190
Artefacto Avatar answered Dec 24 '25 10:12

Artefacto



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!