1. Job은 하나의 배치 작업 단위를 얘기한다.
2. 하나의 Job은 여러개의 Step을 가지고 있다.
3. step 은 tasklet 이나 reader, processor, writer 묶음을 가지고 있을 수 있다.
- tasklet 과 reader, processor, writer 묶음은 같은 레벨이므로 reader > processor > tasklet 등으로 끝낼 순 없다.
4. reader, processor, writer 묶음으로 처리하는 방식을 chunk 지향 처리 방식 이라 한다.
5. ItemReader, ItemProcessor, ItemWriter 를 구현하여 각 컴포넌트 를 작성 해야 한다.
stepBuilderFactory.get("name")
.<Line, Line>chunk(2)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
Tasklet은 하나의 작업 진행 후 다른 작업 진행 시나리오에 대해 더 자연스럽지만, 청크는 페이지를 읽고 처리하거나 또는 메모리에 많은 양의 데이터를 유지하고 싶지 않은 상황을 처리 하는데 적합하다.
chunk 는 청크 단위를 정하고 그 단위에 대해 더이상 read할 파일이 없을때까지 반복한다.
작업의 commit 은 청크 단위로 진행된다.
Reader 구현시 ItemReader 를 implement 하고
스텝과 스텝 사이를 돌아다닐 수 있는 DTO는 반드시 Serializable 을 구현 해야한다.
StepExecutionListener 를 구현하면 beforeStep 메소드와 afterStep 메소드를 구현해야 한다.
execution 전후에 실행될 작업을 구현할 수 있다.
beforeStep 과 afterStep 의 파라미터로 들어오는 StepExecution 을 통해
stepExecution.getJobExecution().getExecutionContext().put("key", value); 로 삽입하고,
다음 스텝에서 stepExecution.getJobExecution().getExecutionContext().get("key")로 가져올 수 있다.
'SPRING' 카테고리의 다른 글
Spring 메소드 실행 실패시 재실행 (0) | 2021.05.24 |
---|---|
Spring Rest Docs 사용법 (0) | 2021.05.02 |
Spring RestTemplate (0) | 2021.04.20 |
스프링 비동기 타임아웃 설정 변경 (0) | 2020.11.23 |
spring 예외 핸들링 (0) | 2020.11.22 |