Batch 에 대해서 이전 포스팅에서 소개를 하였다.
자세한 내용은 참고 포스팅 참고 바란다.
이번 포스팅에서는 Spring Batch 에서 사용할 수 있는 배치의 종류에 대해 설명할 것이다.
스프링에서 Batch를 사용하는건 다음과 같다.
Job은 여러가지의 Step 모음으로 구성되어있고 Job은 순차적인 Step을 수행하며 Batch 를 수행하게 된다.
Step 은 Tasklet 처리 방식과 Chunk 지향 처리 방식을 지원한다.
Tasklet
: 데이터 처리과정이 tasklet안에서 한번에 이뤄진다.
배치 처리과정이 쉬운 경우 쉽게 사용되며, 대량처리 경우 더 복잡해질 수 있다.
Chunksize
: chunksize 단위로 데이터가 페이징처럼 처리된다.
대용량 데이터를 처리할때 사용되며, reader / processor / writer 로 구분되어 처리된다.
(reader와 writer는 필수이며, processor는 필수 아님)
- reader
: (파일/DB) 데이터(item)를 읽어오며, reader안에서도 페이징처리가 가능한 bean들이 있다.
ItemReader, MybatisPagingItemReader, JpaPagingItemReader, ...
- processor
: reader에서 읽어온 데이터(item)를 필터/처리 하고 write로 보내는 역할.
item을 필터 도중 null로 리턴하면, 그 item은 write로 전달되지 못한다.
ex) 10개 read 후 processor에서 4개 필터링 해서 6개만 리턴하면 write에서는 6개만 처리한다.
- writer
: processor에서 처리된 데이터들(items : List<item>)을 파일이나 DB에 적재하는 역할.
writer는 기본으로 List단위로 처리되며, List는 chunksize에 의해 처리된다.
참고 포스팅
https://thenicesj.tistory.com/308
'IT > Java' 카테고리의 다른 글
[Error] JSON parse error: Cannot deserialize value of type `java.util.ArrayList<>` from Object value (token `JsonToken.START_OBJECT`); (25) | 2024.05.26 |
---|---|
Spring Batch (part 3. 프로젝트 적용 - Chunk 방식) (5) | 2024.05.20 |
[Error] Request header is too large. 에러 (13) | 2024.05.17 |
NamedQuery 에 대해 (16) | 2024.05.07 |
Spring Cloud에 대해 (16) | 2024.05.05 |
댓글