February 18, 2024
강의메모 # 스프링 배치 도메인 이해 - STEP # 기본 개념 # Batch job을 구성하는 독립적인 하나의 단계로서 실제 배치 처리를 정의하고 컨트롤하는 데 필요한 모든 정보를 가지고 있는 도메인 객체 단순한 단일 태스크 뿐 아니라 입력과 처리 그리고 출력과 관련된 복잡한 비즈니스 로직을 포함하는 모든 설정들을 담고 있다. 배치작업을 어떻게 구성하고 실행할 것인지 Job 의 세부 작업을 Task 기반으로 설정하고 명세해 놓은 객체 모든 Job은 하나 이상의 step으로 구성됨 기본 구현체 # TaskletStep 가장 기본이 되는 클래스로서 Tasklet 타입의 구현체들을 제어한다 PartitionStep 멀티 스레드 방식으로 Step 을 여러 개로 분리해서 실행한다 JobStep Step 내에서 Job 을 실행하도록 한다 FlowStep Step 내에서 Flow 를 실행하도록 한다 Step # API 를 설정할 때 Tasklet 과 Chunk 기반 클래스를 동시에 설정할 수 없다 API 설정에 따른 각 Step 생성 예제 # TaskletStep # 직접 생성한 Tasklet 실행 TaskletStep # ChunkOrientedTasklet 을 실행 JobStep # Step 에서 Job 을 실행 FlowStep # Step 에서 Flow 를 실행 References https://www.
...
February 18, 2024
강의메모 # 스프링 배치 도메인 이해 - StepExecution # 기본 개념 # Step 에 대한 한번의 시도를 의미하는 객체로서 Step 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간, 종료시간 ,상태(시작됨,완료,실패), commit count, rollback count 등의 속성을 가짐 Step 이 매번 시도될 때마다 생성되며 각 Step 별로 생성된다 Job 이 재시작 하더라도 이미 성공적으로 완료된 Step 은 재 실행되지 않고 실패한 Step 만 실행된다 이전 단계 Step이 실패해서 현재 Step을 실행하지 않았다면 StepExecution을 생성하지 않는다.
...
February 18, 2024
강의메모 # 스프링 배치 도메인 이해 - StepContribution # 기본 개념 # 청크 프로세스의 변경 사항을 버퍼링 한 후 StepExecution 상태를 업데이트하는 도메인 객체 청크 커밋 직전에 StepExecution 의 apply 메서드를 호출하여 상태를 업데이트 함 ExitStatus 의 기본 종료코드 외 사용자 정의 종료코드를 생성해서 적용 할 수 있음 구조 # 참고 # https://devfunny.tistory.com/687
apply() 메서드를 호출한 경우 : StepContribution의 변경 사항이 StepExecution에 반영 apply() 메서드를 호출하지 않을 경우 : StepExecution에 StepContribution의 변경 사항이 반영안됨 Spring Batch에서는 일반적으로 StepContribution의 변경 사항이 자동으로 StepExecution에 적용된다.
...