반응형
스프링 배치의 도메인 - Job
Job
- Job이란? 스프링 배치의 하나의 배치를 뜻한다.
- 예) API 서버의 접속 로그 데이터를 통계 서버로 옮기는 배치
- Job Configuration을 통해서 생성되는 객체 단위로, 배치를 어떻게 구성하고 실행할 것인지 전체적으로 설정하고 명세해 좋은 객체이다.
- 배치 Job을 구성하기 위한 최상위 인터페이스이며, 스프링 배치가 기본 구현체(
org.springframework.batch.core.Job
)를 제공한다. - 여러 Step을 포함하고 있는 컨테이너로 반드시 한개 이상의 Step으로 구성해야 한다.
SimpleJob
- 순차적으로 Step을 실행시키는 Job
FlowJob
- 특정한 조건과 흐름에 따라 Step을 구성하여 실행시키는 Job
- Flow 객체를 실행시켜서 작업을 진행한다.
JobInstance
- Job이 실행될 때 생성되는 Job의 논리적 실행 단위 객체이며, 고유하게 식별 가능한 작업 실행을 나타낸다.
- 하나의 Job의 설정과 구성은 동일하지만 Job이 실행되는 시점의 내용은 달라지기 때문에 Job의 실행을 구분해야한다. 때문에 JobInstance를 이용해 각 실행의 Job을 구분한다.
Job
과JobInstance
는1:M
관계이다.
JobInstance 생성과 실행
- 처음 시작하는
Job
+JobParameter
일 경우 새로운JobInstance
를 생성한다. - 이전과 동일한
Job
+JobParameter
으로 실행 할 경우 이미 존재하는 JobInstance를 리턴한다.- 내부적으로
JobName
+jobKey
를 가지고JobInstance
객체를 얻는다.
- 내부적으로
JobParameter
- Job을 실행할 때 함께 포함되어 사용되는 파라미터를 가진 도메인 객체
- 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도이다.
JobParameters
와JobInstance
는1:1
관계이다.
JobParameter의 생성과 바인딩
- 어플리케이션 실행 시 주입:
java -jar Batch.jar [key]=[value]
- 코드로 생성:
JobParameterBuilder
,DefaultJobParametersConverter
사용 - SPEL 이용:
@JobScope
,@StepScope
선언 후@Value("#{jobparameter[key]}")
사용 JOB_EXECUTION
테이블과JOB_EXECUTION_PARAM
테이블은1:M
관계이다.
JobExecution
- JobInstance에 대한 한번의 시도를 의미하는 객체로서 Job 실행 중에 발생한 정보를 저장하고 있는 객체
- 시작시간, 종료시간, 상태, 종료상태의 속성을 가진다.
JobInstance와의 관계
- JobExecution은
FAILED
또는COMPLETED
등의 Job의 실행 결과 상태를 가지고 있다. - JobExecution의 실행 상태 결과가
COMPLETED
면 JobInstance 실행이 완료된 것으로 간주해서재실행이 불가
하다. - JobExecution의 실행 상태 결과가
FAILED
면 JobInstance 실행이 완료되지 않은 것으로 간주해서재실행이 가능
하다.- 동일한 JobParameter이더라도 재실행 가능
- JobExecution의 실행 상태 결과가
COMPLETED
가 될 때 까지 하나의 JobInstance 내에서 여러 번의 시도가 생길 수 있다.
반응형
'Java & Kotlin > Spring Batch' 카테고리의 다른 글
[Spring Batch] 스프링 배치 실행 - Flow (0) | 2022.05.28 |
---|---|
[Spring Batch] 스프링 배치 실행 - Step (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 실행 - Job (0) | 2022.05.28 |
[Spring Batch] 스프링 배치 도메인 - Step, 나머지 (0) | 2022.05.28 |
[Spring Batch] 스프링 배치의 DB 스키마 (0) | 2022.05.18 |
[Spring Batch] 스프링 배치와 구성 (0) | 2022.05.18 |