Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring Batch. How to limit the no of executions of a chunk

I started to use spring batch very recently. Can any body tell me how to limit the no of execution of a chunk (i.e. invocation of ItemReader and ItemWrite) within a tasklet.

I set the allow-start-if-complete="false", start-limit="1" in the tasklet. Then I set commit-interval="1" in the chunk.

<batch:step id="mig-chain-data">
<batch:tasklet allow-start-if-complete="false" start-limit="1">
<batch:chunk commit-interval="1" reader="reader" writer="writer"></batch:chunk>
</batch:tasklet>
</batch:step>

My expectation is to run the tasklet/chunk only once for every batch job execution. But the behavior was the chunk(reader and writer) gets invoked several times/infinite.

Can anybody help me on this regards please.

like image 551
dharshan Avatar asked Dec 27 '25 21:12

dharshan


1 Answers

Number of executions of a chunk depends on the reader; Spring Batch does not control it. If your reader reads from a database table, this limit will be the number of records returned from your SQL statement, or if it reads from a file it will be the number of lines (in the very basic cases)

start-limit controls the number of times a Step may be started, not the chunk configured for this step.

like image 185
Serkan Arıkuşu Avatar answered Dec 31 '25 00:12

Serkan Arıkuşu