스프링 배치 개발 시 두 가지 타입이 있습니다:
- Tasklet: 한 번에 처리하는 방식
- Chunk: 데이터를 덩어리로 나누어 처리하는 방식
Job 설정 파일을 개발할 때의 과정은 다음과 같습니다:
- Config 파일 생성
- Job Bean 생성
- Step Bean 생성
특징:
- Job은 여러 개의 Step 실행 순서를 정의합니다. Job과 Step은 1관계입니다.
- Step은 Chunk (Reader, Processor, Writer) 방식 또는 Tasklet 방식 중 용도에 맞게 선택하여 구현할 수 있습니다. Step과 Tasklet(또는 Chunk)은 1:1 관계입니다.
- 반드시 JobListener와 StepListener를 사용해야 합니다.
차이 비교
Tasklet 또는 Chunk 개발시
1. Tasklet
- Tasklet 파일 생성
- execute 메소드 내 로직 구현
2. Chunk
- ItemReader 파일 생성
- ItemProcessor 파일 생성 (선택 사항)
- ItemWriter 파일 생성
장단점
1. Tasklet
• Chunk(Reader, Processor, Writer)와 다르게 역할을 나누지 않고 하나의 클래스 내에서 한 번에 구현하는 방식이다.
• Tasklet의 시작~ 종료까지 하나의 트랜잭션으로 처리된다.
• 대용량 처리에 부적합하다.
2. Chunk (temReader, ItemProcessor, ItemWriter)
• 데이터 처리 역할에 따라 클래스를 분리하여 구현하는 방식이다.
a. ItemReader : 데이터 읽기
i. 데이터를 읽어서 processor에게 전달한다.
※ processor가 없는 경우, writer에게 전달한다.
ii. MyBatisPagingltemReader, FlatFileltemReader 등 데이터를 읽는 방법에 따라 필요한 Reader를 상속받아서 구현한다.
b. ltemProcessor : 데이터 가공 (선택 사항)
i. reader에게 전달받은 데이터를 가공하는 역할을 한다.
ii. 데이터를 처리한 후, writer에게 전달한다.
c. ltemWriter : 데이터 쓰기
i. 전달받은 데이터를 Chunksize만큼 처리한 후, Commit 한다.
• Step에서 정의한 ChunkSize가 Commit 단위가 된다.
• 대용량 처리에 적합하다.