Mar 20th, 2013, 08:16 PM
How to make Spring-Batch job restartable
Hello Spring-Batch experts,
I have a very simple Spring-Batch application to copy one table data from one database to the other. The application is only consisted of 4 programs RowMapper, PrepareStatementSetter, Patitioner and main entry.
The main program is calling Spring-Batch JobLauncherTestUtils. Basically all elements are using Spring-Batch default implementation and we don't have specific implementation. The application runs fine. The only thing
is lacking of the restart-ability. The test that I have done is to kill the job in the middle, then re-run the application. I thought the application re-run will start from the failed point, somehow it doesn't. Every time it restarts from the beginning, meaning if the app has inserted 100 rows, next time it does not start from 101,
instead it starts from the very beginning.
The configuration looks like:
<job id="partitionJdbcJob" xmlns="http://www.springframework.org/schema/batch">
<partition step="step1" partitioner="partitioner" >
<handler grid-size="7" task-executor="taskExecutor" />
<bean id="partitioner" class="xxx.yyy.zzz.RangePartitioner">
<property name="dataSource" ref="sourceDataSource" />
<property name="table" value="some_big_table" />
<property name="column" value="OID" />
Any thoughts or suggestions?
Mar 29th, 2013, 02:37 PM
With remote partitioning, you'll need to stamp your records as being processed in some way (since there isn't a global state maintained across all partitions). When using databases, typically this is handled with a processed column that is updated via a ChunkListener with each commit.
Tags for this Thread