Skip to content
  • https://chatgpt.com/c/6752bc19-2988-800d-a0b6-b2d118c74141

Spring batch

  • Architecture
  • configure a jobRepository
  • Job parameter
  • Building job with multiple Steps

Job flow

  • status control
  • job flow
  • conditional Flow
  • parallel flow
  • Listeners
  • StepExecutionListener
  • Restarting jobs
  • Reusability - reuse same step among several job.
  • nested jobs
job1
    .listener(listener)                                     # event - job start,end
    .next(step2())
    .next(job2Reference())                                          # nested
    .split(new SimpleAsyncTaskExecutor()).add(step3(), step4())     # parallel

Step1.
    .<InputType, OutputType>chunk(10)
    .listener(listener)                                     # event - step start,end

Reading

  • chuck-oriented processing
  • ItemReader
  • configure chuck-oriented steps
  • reading from DB (single thread)
  • reading from DB (multiple thread)
     return new JdbcCursorItemReader<>()
    

Writing

  • ItemWriter
  • Writing flat files
  • Writing to a database with PreparedStatements
  • Writing to a database with named parameters
  • Writing a JSON file
 return new JdbcBatchItemWriter<>();
 FlatFileItemWriter<OutputType> writer = new FlatFileItemWriter<>();

processing Items

  • ItemProcessor
  • ItemProcessor Bean Validation
  • Implementing custom processor logic
  • Chaining ItemProcessors
  • Filtering batch data

Resilient jobs

  • skip logic for jobs
  • retry logic for steps
  • multithreaded steps
Step1.
    .skip(Exception.class)
    .skipLimit(10)

Step1.
    .retry(Exception.class)
    .retryLimit(3) 

Step1.    
    .taskExecutor(new SimpleAsyncTaskExecutor())