728x90
- StepBuilderFactory
- StepBuilder 를 생성하는 팩토리 클래스로서 get(String name)메서드 제공
- StepBuilderFactory,get("stepName"): "stepName" 으로 Step 을 생성
- StepBuilder
- Step 을 구성하는 설정 조건에 따라 다섯 개의 하위 빌더 클래스를 생성하고 실제 Step 생성을 위임한다.
- TaskletStepBuilder
- TaskletStep 을 생성하는 기본 빌더 클래스
- SimpleStepBuilder
- TaskletStep 을 생성하며 내부적으로 청크기반의 작업을 처리하는 CHunkOrientedTasklet 클래스를 생성
- PartitionStepBuilder
- PartitionStep 을 생성하며 멀티 스레드 방식으로 Job 을 실행한다.
- JobStepBuilder
- JobStep 을 생성하여 Step 안에서 Job 을 실행한다
- FlowStepBuilder
- FlowStep 을 생성하여 Step 안에서 Flow 를 실행한다
- TaskletStep
- 스프링 배치에서 제공하는 Step 의 구현체로서 Tasklet 을 실행시키는 도메인 객체
- RepeatTemplate 를 이용해서 Tasklet 의 구문을 트랜잭션 경계 내에서 반복해서 실행함
- Task 기반과 Chunk 기반으로 나누어서 Tasklet 을 실행함
- Task vs Chunk 기반 비교
- Chunk 기반
- 하나의 큰 덩어리를 n개씩 나눠서 실행한다는 의미로 대량 처리를 하는 경우 효과적으로 설계 됨
- ItemReader, ItemProcessor, ItemWriter 를 사용하여 청크 기반 전용 Tasklet 인 ChunkOrientedTasklet 구현체가 제공된다.
- Task 기반
- ItemReader 와 ItemWriter 와 같은 청크 기반의 작업 보다 단일 작업 기반으로 처리되는 것이 더 효율적인 경우 주로 Tasklet 구혀체를 만들어서 사용
- 대량 처리를 하는경우 Chunk 기반에 비해 더 복잡한 구현 필요
- Chunk 기반
- tasklet()
- Tasklet 타입의 클래스를 설정한다.
- Tasklet
- Step 내에서 구성되고 실행되는 도메인 객체로서 주로 단일 task 를 수행하기 위한 것
- TaskletStep 에 의해 반복적으로 수행되며 반환값에 따라 계속 수행 혹은 종료한다
- RepeatStatus - Tasklet 의 반복 여부 상태 값
- RepeatStatus.FINISHED - Tasklet 종료, RepeatStatus 를 null 로 반환하면 RepeatStatus.FINISHED 로 해석됨
- RepeatStatus.CONTINUABLE - Tasklet 반복
- RepeatStatus.FINISHED 가 리턴되거나 실패 예외가 던져지기 전까지 TaskStep 에 의해 while 문 안에서 반복적으로 호출됨 (*무한루프 주의)
- Tasklet
- 익명 클래스 혹은 구현 클래스를 만들어서 사용
- 메소드를 실행하게 되면 TaskletAStepBuilder 가 반환되어 관련 API 를 설정할 수 있다.
- Step 에 오직 하나의 Tasklet 설정이 가능하며 두개 이상을 설정 했을 경우 마지막에 설정한 객체가 실행된다.
- Tasklet 타입의 클래스를 설정한다.
- startLimit() 기본 개념
- Step 의 실행 횟수를 조정할 수 있다.
- Step 마다 설정할 수 있다.
- 설정 값을 초과해서 다시 실행하려고 하면 StartLimitExceededException 발생
- start-limit 의 디폴드 값은 Ingeger.MAX_VALUE
- allowStartIfComplete() 기본 개념
- 재시작 가능한 job 에서 Step 의 이전 성공 여부와 상관없이 항상 step 을 실행하기 위한 설정
- 실행 마다 유효성을 검증하는 Step 이나 사전 작업이 꼭 필요한 Step 등
- 기본적으로 COMPLETED 상태를 가진 Step 은 Job 재 시작 시 실행하지 않고 스킵한다
- allow-start-of-complete 가 true 로 설정된 step 은 항상 실행한다.
- JobStep 기본 개념
- Job 에 속하는 Step 중 외부의 Job 을 포함하고 있는 Step
- 외부의 Job 이 실패하면 해당 Step 이 실패하므로 결국 최종 기본 Job 도 실패한다
- 모든 메타데이터는 기본 Job 과 외부 Job 별로 각각 저장된다.
- 커다란 시스템을 작은 모듈로 쪼개고 Job 의 흐름을 관리하고자 할 떄 사용할 수 있다.
728x90
'공부 > 스프링 배치' 카테고리의 다른 글
스프링배치 - Flow (0) | 2023.04.13 |
---|---|
스프링 배치 - Job (0) | 2023.04.12 |
스프링 배치 실행 - JobBuilderFactory, JobBuilder (0) | 2023.04.12 |
스프링배치 도메인 (0) | 2023.04.10 |
스프링배치 - 테이블 (0) | 2023.04.10 |
댓글