본문 바로가기

강의

(130)
스프링 배치 - JobExecutionDecider flowJob 을 구성할 때 stop on to end를 연결하여 하나의 flow를 연결하였다. step은 일종의 buisiness 로직을 담는 부분인데 stop on to end와 강한 결합이 생기고 on to end 이런 api가 복잡하게 구성될 수 있다. 여러 step을 구성하다보면 전체적인 step을 파악하기가 어렵다. jobExecutionDecider는 Transition 처리를 위한 전용 클래스 이기 때문에 내부적인 로직을 통해 flow 흐름을 제어할 수 있다. 훨씬 간단하게 심플하게 구성할 수 있다. transitional api를 사용하는 보다 더 깔끔하게 구성할 수 있다. configuration package io.springbatch.springbatch.jobExecutionDec..
스프링 배치 - 사용자 정의 ExitStatus 상태값이 이미 정의 되어있다. Complete Stopped Failed Executing Unknow Noop 이미 정의된 것 외에도 사용자가 직접 지정하여 사용할 수 있다. StepExecutionListener의 afterStep() 메서드에서 Custom exitCode를 생성 후 새로운 ExitStatus 반환 가능 getCompositieListener 를 호출하면 우리가 StepExecutionListener을 구현한 구현체가 호출이 된다 package io.springbatch.springbatch.customExitStatus; import lombok.RequiredArgsConstructor; import org.springframework.batch.core.ExitStatus; i..
스프링 배치 실행 - Transition Transition에 대해 알아보자. Transition: 조건에 따라 흐름을 전환시키는 역할을 하는 api (on(), to() , stop() / fail() / end() / stopAndRestart()) on : 문자열을 이용하여 패턴을 지정할 수 있다. -> step이 종료되면 나서 exitStatus라는 종료코드를 저장하는 속성이 있는데 이 값은 complete, failed, executing stop 등의 속성이 있다. 최종 결과의 상태값이 (ExitStatus) on의 패턴과 같다면 to 로 넘어가라는 뜻이다. to 부터 stop, fail, end, stopRestart는 transitionBuilder에 존재한다. Transition - Flow내 Step의 조건부 실행이 가능하도록..
SpringBatch - Transition - 배치상태 유형 (BatchStatus / ExitStatus / FlowExecutionStatus) Transition 스프링 배치에서 transition은 전환한다 또는 전이된다 라는 개념을 가지고 있다. 조건에 따라서 job이 실행되고 step이 실행될 때 해당 흐름들을 a또는 b또는 c로 전환 시킬 수 있는 기능들을 가지고 있고 a 상태에 따라서 b가 호출되고 b 상태에 따라서 c로 넘어가는 등에 상태 전이의 개념을 가지고 있다. 배치 상태에는 배치가 최종적으로 어떻게 실행을 마치는지 (최종 결과 상태, step과 job이 어떤 상태로 종료 되었는) batch status 상태 정보가 있고 현재 배치가 어떤 종료 코드를 가지고 있는지에 대한 Exit status 상태 정보가 있다. Transition이 가지고 있는 api인 on() / to() / stop() , fail(), end(), sto..
Job and flow job과 step은 고정되고 정해진 패턴과 순서 그러한 흐름들을 구성될 때 job과 step으로 구성할 수 있지만 flow라는 개념은 정해진 순서나 패턴이 아닌 유연하고 상대적으로 복잡한 흐름들을 구성할 수 있다. 이번에는 job과 flow에 대한 개념들을 이해해보자. Flow job 개념 및 api 소개 step을 순차적으로 구성하는 것이 아닌 특정한 상태에 따라 흐름을 전환하도록 구성할 수 있으며 flow job builder에 의해 생성된다. step이 실패 하더라도 job은 실패로 끝나지 않도록 해야 하는 경우 (Simple job으로는 불가능) step이 성공 했을 때 다음에 실행해야 할 step을 구분해서 실행 해야 하는 경우 특정 step은 전혀 실행되지 않게 구성 해야 하는 경우 Flow와..
JobStep defaultJobParametersextractor
TaskletStep 아키텍처 1. Job과 TaskletStep 사이에서 StepExecution 도메인 객체가 생성이 됨. 2. StepExecution 안에 ExecutionContext를 생성하고, taskletStep에 StepExecution을 전달한다. 3. 이때 ExecutionContext의 배치 상태는 STARTED(시작) 종료 상태는 EXECUTING(실행) 상태이다. 4. TaskletStep, RepeatTemplate 사이에서 StepListener의 beforeStep이 호출된다. 5. tasklet 실행이 끝나게 되면 RepeatStatus.Continuable -> 에서 RepeatStatus.finished 상태값으로 변한다. (null 값을 return하긴 함) 6. StepListener에서 aft..
TaskletStep 아키텍처 1. Job과 TaskletStep 사이에서 StepExecution 도메인 객체가 생성이 됨. 2. StepExecution 안에 ExecutionContext를 생성하고, taskletStep에 StepExecution을 전달한다. 3. 이때 ExecutionContext의 배치 상태는 STARTED(시작) 종료 상태는 EXECUTING(실행) 상태이다. 4. TaskletStep, RepeatTemplate 사이에서 StepListener의 beforeStep이 호출된다. 5. tasklet 실행이 끝나게 되면 RepeatStatus.Continuable -> 에서 RepeatStatus.finished 상태값으로 변한다. (null 값을 return하긴 함) 6. StepListener에서 aft..