본문 바로가기
Framework/Spring-Batch

(5) Spring Batch Job

by 조훙 2022. 11. 16.

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