I need to repeat deleteStep
and insertStep
for “n” times based on the pair count that would be sent from service. Here is the batch config runs each steps once and deletes / inserts records.
BatchConfing:
@Bean
public Job job(JobRepository jobRepository,
@Qualifier("transactionManager") PlatformTransactionManager transactionManager,
@Qualifier("sourceMongoTemplate") MongoTemplate sourceMongoTemplate,
@Qualifier("targetMongoTemplate") MongoTemplate targetMongoTemplate,
@Qualifier("deleteTasklet") DeleteTasklet deleteTasklet) {
return new JobBuilder("job", jobRepository)
.incrementer(new RunIdIncrementer())
.start(deleteStep(jobRepository, transactionManager, deleteTasklet))
.next(insertStep(jobRepository, transactionManager, sourceMongoTemplate, targetMongoTemplate))
.listener(new MigrationJobCompletionListener("job"))
.build();
}
@Bean
public Step deleteStep(JobRepository jobRepository,
PlatformTransactionManager transactionManager,
DeleteTasklet deleteTasklet) {
return new StepBuilder("deleteStep", jobRepository)
.tasklet(deleteTasklet, transactionManager)
.listener(new MigrationStepListener("deleteStep"))
.build();
}
@Bean
public Step insertStep(JobRepository jobRepository,
PlatformTransactionManager transactionManager,
MongoTemplate sourceMongoTemplate,
MongoTemplate targetMongoTemplate) {
return new StepBuilder("insertStep", jobRepository)
.<Document, Document>chunk(DEFAULT_CHUNK_SIZE, transactionManager)
.startLimit(DEFAULT_LIMIT_SIZE)
.reader(new MigrationItemReader(sourceMongoTemplate))
.processor(new MigrationItemProcessor())
.writer(new DataInsertionWriter(targetMongoTemplate))
.listener(new MigrationStepListener("insertStep"))
.build();
}
How to make such implementation properly in Spring Batch
?