<Spring Batch> 2. JobRepository, Config Customizing
by BFine
출처 : http://www.yes24.com/Product/Goods/99422216
가. JobRepository
a. 무엇인가?
- 스프링 배치는 Job 상태관리를 위해 해당 정보들을 JobRepository를 통해 저장&관리한다.
- 어떤 동작을 수행할지에 대한 부분들을 JobRepository 참조해서 결정한다.
- 모니터링 영역에도 사용된다. (실행 추세, 어디까지 실행되었는지 파악)
=> Job이 처리되는 데 걸리는 시간, 재시도된 아이템 수 등
- JobRepository는 인터페이스이며 구현하여 데이터를 저장하는데 사용하는 데이터 저장소이다.
나. JobRepository의 테이블
a. BATCH_JOB_INSTANCE
- 스키마의 실제 시작점, Job을 실행하면 JobInstance 레코드가 테이블에 저장된다.
=> JobInstance 레코드는 Job의 논리적 실행을 나타냄
b. BATCH_JOB_EXECUTION
- 배치 Job의 실제 실행 기록을 나타낸다.
=> Job이 실행 될때마다 새로운 레코드가 테이블에 생성된다.
- Job이 진행되는 동안 주기적으로 업데이트 된다.
c. BATCH_JOB_EXECUTION_CONTEXT
- JobExecution의 ExecutionContext를 저장한다.
d. BATCH_JOB_EXECUTION_PARAMS
- Job이 실행될떄마다 사용된 JobParameter의 데이터들을 저장한다.
e. BATCH_STEP_EXECUTION
- Step의 시작과 완료 등 상태에 대한 메타데이터를 저장한다.
=> 분석이 가능하도록 다양한 횟수값(읽기, 처리 등)을 추가로 저장
e. BATCH_STEP_EXECUTION_CONTEXT
- StepExecution의 ExecutionContext를 저장한다. (Step 수준의 컴포넌트 저장)
다. Config Customizing
a. JobRepository
- JobRepository는 JobRepositoryFactoryBean을 통해 생성된다.
- 보통은 ApplicationContext에 두 개 이상의 DataSource가 있는 경우에 커스터마이징한다.
=> JobRepository의 배치 테이블을 따로 관리할 수 있다.
- JobRepositoryFactoryBean 등록을 위해 .afterPropertiesSet(), .getObject 메서드를 호출해야한다.
@Configuration
@RequiredArgsConstructor
public class CustomBatchConfig extends DefaultBatchConfigurer {
private final DataSource dataSource;
private final PlatformTransactionManager transactionManager;
@Override
protected JobRepository createJobRepository() throws Exception {
JobRepositoryFactoryBean factoryBean = new JobRepositoryFactoryBean();
factoryBean.setDataSource(dataSource);
factoryBean.setTransactionManager(transactionManager);
factoryBean.afterPropertiesSet();
JobRepository jobRepository = factoryBean.getObject();
return jobRepository;
}
}
b. JobExplorer
- 배치의 Job 상태 메타데이터를 읽기 전용으로만 노출하고 싶은 경우 사용한다.
=> JobRepository의 데이터에 접근하는 기능을 제공(JobInstance & JobExecution 관련 정보 등)
- JobRepository와 동일하게 dataSource를 적용할 수 있다.
=> 동일한 데이터를 바라봐야하기 때문에 동기화 되도록 둘다 커스터마이징 해야한다.
c. JobLauncher
- 스프링 부트는 기본적으로 SimpleJobLauncher를 사용한다.
- 보통은 커스터마이징 할 필요가 없지만 Job을 구동하는 방법을 외부에 제공할때 사용한다.
'공부 > Spring Batch' 카테고리의 다른 글
<Spring Batch> 4. Chunk 기반 배치, ItemReader (0) | 2021.10.02 |
---|---|
<Spring Batch> 3. 배치 테이블 Embedded DB(H2)로 따로 관리하기 (1) | 2021.09.27 |
<Spring Batch> 1. JobParameters, ExecutionContext (0) | 2021.09.21 |
<Spring Batch> 0. 스프링 배치란? (2) | 2021.09.19 |
<Spring Batch> API 호출해서 DB에 저장하기(with JPA) (4) | 2021.03.01 |
블로그의 정보
57개월 BackEnd
BFine