You will be fine

<Spring Batch> 2. JobRepository, Config Customizing

by BFine
반응형

출처 : http://www.yes24.com/Product/Goods/99422216

 

스프링 배치 완벽 가이드 2/e - YES24

스프링 배치의 `Hello, World!`부터 최근 플랫폼의 발전에 따른 클라우드 네이티브 기술을 활용한 배치까지 폭넓은 스프링 배치 활용 방법과 이와 관련된 유용한 내용을 다룬다. 또한 스프링 프레임

www.yes24.com

 

가. 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

  -  JobExecutionExecutionContext를 저장한다.

 

 d. BATCH_JOB_EXECUTION_PARAMS

  -  Job이 실행될떄마다 사용된 JobParameter의 데이터들을 저장한다.

 e. BATCH_STEP_EXECUTION

  -  Step의 시작과 완료 등 상태에 대한 메타데이터를 저장한다.

      => 분석이 가능하도록 다양한 횟수값(읽기, 처리 등)을 추가로 저장

 

 e. BATCH_STEP_EXECUTION_CONTEXT

  -  StepExecutionExecutionContext를 저장한다. (Step 수준의 컴포넌트 저장)

 

다. Config Customizing

 a. JobRepository

  -  JobRepositoryJobRepositoryFactoryBean을 통해 생성된다.

  -  보통은 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을 구동하는 방법을 외부에 제공할때 사용한다.

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기