Job 정의
- 배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치 작업 자체를 의미
- Job Configuration 을 통해 생성되는 객체 단위로서 배치 작업을 어떻게 구성하고 실행 할 것인지 전체적으로 설정하고 명세해 놓은 객체
- 여러 Step을 포함하는 컨테이너로써 반드시 한개 이상의 Step을 포함 해야 함
구현체 종류
SimpleJob
- 순차적으로 Step을 실행 하는 Job
- 모든 Job에서 유용하게 사용 할 수 있는 표준 기능 제공
FlowJob
- 특정한 조건과 흐름에 따라 Step을 구성하여 실행하는 Job
- Flow 객체를 실행시켜서 작업을 진행
Job Instance
기본 개념
- Job이 실행될 때 생성되는 Job의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타낸다.
- Job의 설정과 구성은 동일하지만 Job이 실행되는 시점에 처리하는 내용은 다르기 때문에 Job의 실행을 구분못함
- Job Instance 생성 및 실행
- 처음 시작된 Job + Job Parameter 일 경우, 새로운 Job Instance 반환
- 이전과 동일한 Job + Job Parameter 일 경우, 존재하는 Job Instance 반환
- 내부적으로는 Job Name + jobKey(Job Parameter Hash) 를 가지고 Job Instance 객체를 반환
- Job 과는 1:M 관계
Job Parameter
- Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체
- 하나의 Job에 존재할 수 있는 여러개의 Job Instance를 구분하기 위한 용도
- Job Parameter 와 Job Instane는 1:1 관계
생성 및 바인딩
- Application 실행 시 주입
java -jar LogBatch.jar requestDate=20220101 java -jar LogBatch.jar name=user1 seq(long)=2L rundate(date)=2022/10/01 age(double)=16.5
- 코드로 생성
- JobParameterBuilder, DefaultJobParametersConverter
- SpEL(Spring Expression Language) 이용
@Value(”#{jobParameter[requestDate]}”), @JobScope, @StepScope 선언 필수
- Job Parameter Type은 4가지를 지원
- STRING
- DATE
- LONG
- DOUBLE
Job Execution
- Job Instance에 대한 한번의 시도를 의미하는 객체로서 Job 실행 중에 발생한 정보들을 저장하고 있는 객체
- 시작시간, 종료시간, 상태(시작됨,완료,실패), 종료상태의 속성
- Job Instance와의 관계
- Job Execution은 ‘FAILD’ 또는 ‘COMPLETED’ 등의 Job 의 실행 결과 상태를 가지고 있음
- Job Execution의 상태가 ‘COMPLETED’일 경우 재실행 불가
- ‘FAILED’이면 Job Instance가 실행이 완료되지 않은 것으로 간주하여 재실행이 불가함
- Job Parameter가 동일 하더라도, Job Instance를 계속 실행 가능
- Job Execution의 실행 상태 결과가 ‘COMPLETED’가 될 때까지 하나의 Job Instance 내에서 여러 번의 시도가 생길 수 있다
Reference
'Framework > Spring-Batch' 카테고리의 다른 글
(7) Spring Batch Chunk (0) | 2022.11.16 |
---|---|
(6) Spring Batch Step (0) | 2022.11.16 |
(4) Spring Batch 의존성 설정 (0) | 2022.11.16 |
(3) Spring-Batch Schema (0) | 2022.11.12 |
(2) Spring Batch Configuration (0) | 2022.11.12 |