PSD( Private-Self-Development )

JobBuilder 와 StepBuilder 그리고 배치 상태 종류 본문

Backend/Spring Batch

JobBuilder 와 StepBuilder 그리고 배치 상태 종류

chjysm 2023. 3. 15. 11:35

JobBuilder 의 종류

  • SimpleJobBuilder 
    • SimpleJob( 순차 실행 ) 을 생성한다.
  • FlowJobBuilder
    • FlowJob( flow 특정 및 해당 flow 순서로 실행 ) 을 생성한다.

 

JobBuilder  API 인터페이스 예시

public Job job() {
        return jobBuilderFactory.get("batchJob")
         	.start(Step)	// 처음 실행 할 Step 설정 SimpleJobBuilder 생성
       		.next(Step)		// 다음에 실행 할 Step 들을 순차적으로 연결
            .incrementer(JobParametersIncrementer)	// JobParameters 에서 필요한 값을 증가시켜 다음에 사용될 JobParameters 를 생성 
            .validator(JobParametersValidator)	// 파라미터 유효성 검증 설정
            .preventRestart(true)	// Job의 재시작 여부 설정 (default:false)
            .listener()		// 이벤트 리스너 생성 
            .build();
}

 

StepBuilder 의 종류 

  • TaskletStepBulider
    • TaskletStep 생성 기본 
  • SimpleStepBuilder
    • TaskletStep 생성
    • 내부 청크 기반의 작업을 처리하는 ChunkOrientedTasklet(대량 처리에 유리) 클래스 생성
      • ChunkOrientedTasklet
        • ItemReader, ItemProcessor, ItemWriter 의 순서를 가진다.
  • PartitionStepBuilder
    • PartionStep 생성 
    • 멀티 스레드 방식 으로 Job 을 실행한다.
  • JobStepBuilder
    • JobStep 생성 
    • Step 안에서 Job 을 실행한다.
      • JobStep
        • 실행 한 외부 Job 이 실패 하면, 해당 Step 이 실패하므로 기존 Job 도 실패한다.  
  • FlowStepBuilder
    • FlowStep 생성 
    • Step 안에서 Flow 실행
      • FlowJob
        • Step 의 특정 상태에 따라 흐름을 전환하도록 구성 하기 위함
    • 내부에 SImpleFlow 를 가지고 있음

 

StepBuilder  API 인터페이스 예시

public Step step1() {
    return stepBuilderFactory.get("step1")
            .tasklet(tasklet()) 		// TaskletStepBuilder
            // .chunk(chunkSize)		// SimpleStepBuilder
            // .chunk(completionPolicy)	// SimpleStepBuilder
            // .partitioner(stepName, partitioner) // PartitionStepBuilder
            // .partitioner(step)		// PartitionStepBuilder
            // .job(job)				// JobStepBuilder
            // .flow(flow)				// FlowStepBuilder
            .build();
}

 

 

Batch 상태 유형

BatchStatus

  • JobExecution 과 StepExecution의 속성 Job 과 Step 종료 후 최종 결과 상태가 무엇인지 정의
  • COMPLETED, STARTING, STARTED, STOPPING, STOPPED, FAILED, ABANDONED, UNKNOWN

 

ExitStatus

  • JobExecution 과 StepExecution의 속성 Job 과 Step 의 실행 후 어떤 상태로 종료되었는지 정의
  • UNKNOWN, EXECUTING, COMPLETED, NOOP, FAILED, STOPPED

 

FlowExecutionStatus

  • FlowExecution 의 속성으로 Flow 의 실행 후 최종 결과 상태가 무엇인지 정의
  • COMPLETED, STOPPED, FAILED, UNKNOWN

 

 

 

 

 


참조

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98/dashboard

'Backend > Spring Batch' 카테고리의 다른 글

Spring Batch 이벤트 리스너  (0) 2023.04.24
Spring Batch 멀티 스레드 프로세싱  (0) 2023.04.19
Spring Batch 반복 및 오류 제어  (0) 2023.04.17
Spring Batch 도메인 이해  (0) 2023.02.06
Spring Batch 란?  (0) 2023.01.17