본문 바로가기

강의/스프링배치

(33)
스프링배치 도메인 이해 - StepContribution 청크 프로세스: 큰 범위의 청크 프로세스는 Tasklet을 포함한다. 청크 프로세스를 처리하는 전용 Tasklet이 있는데 이것이 청크 프로세스를 실행한다. 우리가 사용하는 Tasklet도 Chunk 기반이다. Stepcontribution 기능 중 독특한 것은 Batch status 값과 종료 코드인 ExistStatus 값을 가지는데 그 중 종료 코드인 ExistStatus 값을 변경할 수 있는 권한이 있다. Step Contribution, Step Execution 흐름 확인 1. taskletstep이 실행되면 stepExecution 객체를 생성한다. 2. stepExecution이 내부적으로 stepcontribution을 생성한다. 3. taskletStep이 chunkOrientedTas..
스프링 배치 도메인 이해 - Step Execution 성공한 step은 기본적으로 재실행이 안되지만 옵션을 통해서 성공한 step도 재실행이 되도록 할 수 있다. step이 실패하면, 이후 step은 실행되지 않는다. 파란색 박스 jobParameter는 2021.01.02 이다.
스프링 배치 도메인 이해 - step 1. Step 독립적인 단계 Job은 가장 큰 틀의 명세서 Job 안에 우리가 구현해야할 그런 기술적인 내용을 담지는 않는다. Job은 큰 틀의 구성과 설정이기 때문이다. 실제 비지니스 로직은 Step이라는 도메인 객체에 포함하게 된다. Step은 인터페이스기 때문에 이를 구현한 구현체를 Spring이 제공하고 있다. 물론 직접 구현해도 상관이 없다. 물론 spring batch가 제공하는 step의 구현체를 이용하여도 대부분 잘 사용할 수 있다. TaskletStep, Partitionstep, JobStep, FlowStep 구조를 살펴보자 Step 인터페이스 이를 구현한 AbstractStep Job이라는 도메인이 있고 Job의 bean을 생성하고 Job은 여러개의 step을 포함한다. Step은 ..
스프링 배치 도메인 이해 - JobExecution 1. JobExecution JobExecution은 "Failed" 또는 "Completed" 등의 Job의 실행 결과 상태를 가지고 있음 JobExecution의 실행 상태 결과가 JobInstance 실행이 완료된 것으로 간주해서 'COMPLETED'면 재 실행 불가 JobExectuion의 실행 상태 결과가 JobInstance 실행이 완료되지 않은 것으로 간주해서 'Failed'면 재실행이 가능함. JobExecution의 실행 상ㅇ태 결과가 Completed 될 때 까지 하나의 JobInstance 내에서 여러 번의 시도가 생길 수 있음.
스프링 배치 도메인 이해 - Job + JobInstance + JobParameter 1. Job 2. Job의 구조 Jobparametes는 이후에 학습할 도메인 JobLauncher도 이후에 학습 예정 BatchJob을 구성하고 실행시키는 주체는 JobLauncher 클래스이다. job을 실행시킬 때 필요한 인자는 Job객체와 JobParameters라는 도메인 객체를 가지고 JobLauncher가 실행시킨다. Job은 내부적으로 Job을 구성할 때 여러 Step을 포함해서 구성한다. Job은 하나의 도메인 객체고 interface로 제공되지만 SimpleJob은 Step을 포함하고 있는 일종의 컨테이너 역할을 한다. Steps라는 리스트를 품고 있고 job이 구도오디면 Step1, 2, 3 을 실행시키는 구조이다. Job은 최상위 interface이고 execute 메서드가 있다. ..
스프링 배치 - DB 스키마 생성 (2) JOB 관련 테이블 batch_job_instance - job이 실행될 때 jobinstance 정보가 저장되며 job_name과 job_key를 키로 하여 하나의 데이터가 저장 - 동일한 job_name과 job_key로 중복 저장될 수 없다. BATCH_JOB_EXECUTION - job의 실행정보가 저장되며 Job 생성, 시작, 종료 시간, 실행 상태, 메세지 등을 관리 BATCH_JOB_EXECUTION_PARAMS - Job과 함께 실행되는 Job parameter 정보를 저장 BATCH_JOB_EXECUTION_CONTEXT - job의 실행동안 여러가지 상태정보, 공유 데이터를 직렬화 9Json 형식) 해서 저장 - step간 서로 공유 가능함 Step 관련 테이블 BATCH_STEP_EX..
스프링 배치 시작 - DB 스키마 생성 및 이해 (1) 1. 기본 이해 1-1. JobExecution 클래스 Job이 실행되는 동안 생성이 된다. job의 실행 정보, 상태 정보를 담고있다. 1-2 StepExecution 클래스 Step도 실행되는 동안 StepExecution이 생성된다. step의 실행 정보, 상태 정보 1-3 실행 정보, 상태 정보 저장 저장되어 있는 table을 스프링 배치에서 기본적으로 제공하고 있다. 스크립트를 가지고 적용할 수 있다. 스크립트를 가지고 테이블을 생성해서 실행정보, 상태정보를 저장하면 된다. 실행정보 상태정보를 메타데이터라고 한다. 2. DB job이 몇시에 실행이 되었으며, 최종 종료된 상태는 어떤 상태인지 실행정보와 상태정보를 database에 저장하는 단계가 있다. 2-1 db 저장의 이점 그래야 우리가 j..
스프링 배치 시작 - 연습용 배치 생성 1. 기본 설정 스프링 배치를 실행하기 위해, 기본적인 설정을 추가해주자. pom.xml org.springframework.boot spring-boot-starter-batch com.h2database h2 runtime org.projectlombok lombok 1.18.24 provided 2. 스프링 배치 실행 스프링 배치의 구조는 아래와 같다. Job은 여러개의 Step을 가질 수 있으며, Step은 여러개의 Tasklet을 가질 수 있다. Tasklet은 Business logic이라고 볼 수 있다. 코드를 작성해보자. package io.springbatch.springbatch; import lombok.RequiredArgsConstructor; import org.springfra..