Students will be introduced using Spring Batch for processing batch jobs.
Introduction
- Introduction to Batch processing
- This use-cases for batch
- Introduction to Spring Batch
- Its relation with jsr-352
- Discuss batch concepts (job, step, etc)
- Understand job execution (instance, execution)
- Understand the role of job parameters
- Define steps (Tasklets and Chunks)
- Understand step execution
Your first project
- Set up a Spring Batch project (Spring Boot)
- Overview of XML and Java DSL to define jobs
- Understand the Tasklet interface
- Introduction to StepScope and JobScope
- Understand the Job Repository
- Define and use job parameters
Steps and Flows
- Define sequential flows
- Define conditional flows
- Understand the difference between BatchStatus and ExitStatus
- Using deciders
- Define reusable flows
- Splitting processing using split
- Stopping and interrupting processes (end, stop and fail)
- Define and register various listeners
- Comprehend job execution context and step execution context
- Saving state between job executions and step executions
- Sharing state between steps
Chunk-based Processing
- Understand the components that make up a chunk
- Understand a chunk step's life-cycle
- Define Item Readers
- Understand and define Item Processors
- Define Writers
- Define Item Stream implementations
- Work with flat files (csv, xml, json, …)
- Read multiple files
- Write multiple files (composite and classified)
- Read database data
- Understand the different between cursor and paged processing
- Writing to databases (batch)
- Discuss various processing idioms (transform, filter)
- Combining processors
- Data validation (including jsr-303)
Application Development
- Restarting jobs
- Handling exceptions
- Resilience with retry logic
- Skipping items
- Managing jobs programmatically using
JobLauncher
andJobOperator
- Discuss starting jobs (rest, schedulers etc.)
- Discuss writing unit and integration testing
Scalability
- Improving throughput options (chunk-size, commit interval, page size)
- Discuss Scalability options
- Use Multi-threaded steps (and understand its caveats)
- Define asynchronous processors
- Local and remote partitioning
- Discuss remote chunking