0. spring batch 구조를 보자
JOBLAUNCER는 COMPONENT . (JOB을 실행시킨다)
JOB은 실제 진행하는 배치 작업을 의미한다.
STEP은 배치 작업의 단계 . 1개의 JOB에, 여러가지 STEP 단계를 지닐 수 있다.
테이블을 읽는 ITEM READER -> ITEMPROCESSOR -> ITEMWRITER 등의 구성을 가질 수 있다.
사용자의 코드와 구성인 application -> job등을 포함하는 core -> 외부와 작용하는 infrastrcture layer (step)
(3 Layer)
1. JOB (일)
전체 배치 과정을 캡슐화 한 것. (내부 과정과 내부 CLASS등을 가린다)
주로 CLASS 형태로 JOB을 구현하고. -> 내부 INSTACNE나 EXECUTION 등을 정의한다고 생각.
@BEan으로 configuration을 활용하여 관리할 수 있다.
2. Step
작업 처리의 단위
*Chunk 기반으로 하나의 트랜젝션으로 -> read,processor write를 모두 처리함에 주의하자.
Chunksize = 1 transaction에서 쓸 아이템 갯수 (총 몇개 읽을거야? )
commitinterval = 1번에 reader가 읽는 갯수 (reader가 한번에 몇개를 읽을거야 ? )
당연히 commitinterval >= chunksize여야하고, 만약에 반대로 < 인 경우에는 나머지 읽은 애들을 버려버린다.
3. Tasklet?data를 읽고, 쓰고 , 처리되는 과정이 한번에 일어난다.ex) stepBuilderFactory.get("step1").tasklet(myTasklet()).build(); -> 한번에 다 진행 가능. *read, write 등은 설정할 수 없다.
4. schema 구조일반 erd 형태가 아닌, 메타데이터를 저장하는 schema. ex) job의 execution, 설정 일정 등을 저장한다.
- 초기의 설정이 필요하고, 조회만 진행한다. (심지어는 항상 조회하지도 않는다)
'백엔드 > Spring Batch' 카테고리의 다른 글
Multi Thread로 처리하기 (0) | 2024.01.15 |
---|---|
Spring Batch Exception (0) | 2024.01.15 |
Spring Batch Test (0) | 2024.01.15 |
Spring Batch 활용 (0) | 2024.01.14 |
배치 프로그램이란? / Spring Batch를 쓰는 이유 (0) | 2024.01.14 |