SPRING

    StepContribution

    청크 프로세스의 변경 사항을 버퍼링 한 후 StepExecution 상태를 업데이트하는 도메인 객체 청크 커밋 직전에 StepExecution의 Apply 메서드를 호출하여 상태를 업데이트 ExitStatus의 기본 종료코드 외 사용자 정의 종료코드를 생성해서 적용 할 수 있음 1. stepExecution이 StepContribution을 생성 new StepContribution(this)를 통해 생성하는것 확인가능 2. tasklet을 실행하면서 방금 생성한 stepContribution을 인자로 넣어줌 3. 우리가 작성한 tasklet으로 넘어옴 4. 해당 tasklet이 정상적으로 처리되면 stepExecution에 방금 실행을 통해 얻은 stepContribution값을 넘겨줌 apply메소드..

    StepExecution

    Step에 대한 한번의 시도를 의미하는 객체 Step 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간, 종료시간, 상태, commitCount, rollback count등의 속성을 가짐 Step이 매번 시도될 때마다 생성되며 각 Step 별로 생성된다. Job이 재시작 하더라도 이미 성공적으로 완료된 Step은 재 실행되지 않고 실패한 Step만 실행 Step이 실제로 시작됐을 때만 StepExecution을 생성함 Step의 StepExecution이 모두 정상적으로 완료 되어야 JobExecution이 정상적으로 완료된다. (하나라도 실패시 JobExecution은 실패) JobExecution와 StepExecution은 1:M관계 * Batch_Step_Execution 테이블 * Bat..

    Step

    특징 Batch Job을 구성하는 독립적인 하나의 단계 입력과 처리 그리고 출력과 관련된 복잡한 비즈니스 로직을 포함하는 모든 설정들을 담고 있음 배치 작업을 어떻게 구성하고 실행할 것인지 Job의 세부 작업을 Task 기반으로 설정하고 명세해 놓은 객체 모든 Job은 하나 이상의 Step으로 구성 구현체 TaskletStep 가장 기본이 되는 클래스(직접 생성한 Tasklet 실행, ChunkOrientedTasklet을 실행) ParitionStep 멀티 스레드 방식으로 Step을 여러개로 분리해서 실행 JobStep Step 내에서 Job을 실행하도록 한다(Step에서 Job을 실행) FlowStep step 내에서 Flow를 실행하도록 한다(Step에서 Flow를 실행) Job(execute())..

    JobExecution

    JobInstance에 대한 한번의 시도를 의미하는 객체로 Job 실행 중에 발생한 정보들을 저장하고 있는 객체 시작시간, 종료시간, 상태(시작됨, 완료, 실패) 종료상태의 속성을 가짐 JobInstance 과의 관계 JobExecution은 Failed또는 Completed 등의 Job의 실행 결과 상태를 가지고 있음 JobExecution의 실행 결과가 'Completed'면 JobInstance 실행이 완료된 것으로 간주해서 재 실행이 불가 JobExecution의 실행 결과가 Failed면 JobInstance실행이 완료되지 않은것으로 간주해 재실행이 가능함 JobParameter가 동일한 값으로 Job을 실행할지라도 JobInstance를 계속 실행할 수 있음 JobExecution의 실행 상태..

    JobParameter

    Job을 실행할때 함께 포함되어 사용하는 파라미터를 가진 도메인 객체 하나의 Job에 존재할 수 있는 여러개의 JobInstance를 구분하기 위한 용도 JobParameters와 JobInstance는 1:1 관계 JobParameter의 특징 JobParameters는 LinkedHashMap 타입의 파라미터들을 갖는다. JobParameter는 4개의 타입을 지원함, ParameterType = (String, Date, Long, Double) 실행 방법 1) 직접 JobParameterBuilder를 통한 주입방식 JobParameters를 사용하는 방법 1) task의 StepContribution 2) StepContribution -> StepExecution 3) StepExecution..

    JobInstance

    Job이 실행될 때 생성되는 Job의 논리적 실행 단위 객체로서 고유하게 식별 가능한 작업 실행을 나타냄 ex) 하루에 한번씩 job이 실행되면 매일 실행되는 각각의 job을 jobInstance로 표현 JobInstance 생성 및 실행 처음 시작하는 JOB + JOB Parameter일 경우 새로운 JobInstance생성 이전과 동일한 JOB + JOB Parameter으로 실행 할 경우 이미 존재하는 JobInstance 리턴 내부적으로 JobName + jobKey(해시값)를 가지고 JobInstnace 객체를 얻음 Job과는 1:M관계 Batch_job_Instance 테이블과 매핑 Job_name과 Job_key가 동일한 데이터는 중복해서 저장할 수 없음

    JOB

    배치 계층 구조에서 가장 상위에 있는 개념으로 하나의 배치작업 자체를 의미함 Job Configuration을 통해 생성되는 객체 단위로서 배치 작업을 어떻게 구성하고 실행할 것인지에 대한 명세 배치 job을 구성하기 위한 최상위 인터페이스이며 스프링 배치가 기본 구현체를 제공한다. 여러 Step을 포함하고 있는 컨테이너로서 반드시 한개 이상의 STep으로 구성해야 함 simpleJob 순차적으로 step을 실행시키는 job 모든 job에서 유용하게 사용할 수 있는 표준 기능을 가지고 있음 flowJob 특정한 조건과 흐름에 따라 step을 구성하여 실행시키는 job flow 객체를 실행시켜 작업을 진행함

    DB스키마 생성 하기 및 설명

    프로젝트 셋팅 더보기 spring: profiles: active: local --- spring: config: activate: on-profile: local datasource: hikari: jdbc-url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: sa password: driver-class-name: org.h2.Driver batch: jdbc: initialize-schema: embedded --- spring: config: activate: on-profile: mysql datasource: hikari: jdbc-url: jdbc:mysql://localhost:3306/batch?useUnic..

    Spring batch 시작하기

    JobBuilderFactory job을 생성하는 빌더 팩토리 StepBuilderFactory step을 생성하는 빌더 팩토리 Job ramJob 이름으로 Job 생성(jobBuilderFactory.get("ramJob")) Step ramStep 이름으로 step 생성(stepBuilderFactory.get("ramStep")) tasklet (인터페이스) Step 안에서 단일 테스크로 수행되는 로직 구현 기본적으로 Job은 task를 무한반복시킴, 그래서 RepeatStatus.FINISHED로 한번만 실행시키고 끝내줘야함 동작 순서 Job 구동 Step을 실행 Tasklet을 실행 JOB (일, 일감) STEP (일의 항목, 단계) Tasklet(작업 내용) - 실제 비지니스 로직을 가지고 있..

    프로젝트 구성 및 의존성 설정

    의존성 추가 @EnableBatchProcessing 어노테이션 추가 총 4개의 설정 클래스 실행, 스프링 배치의 모든 초기화 및 실행 구성이 이루어짐 스프링 부트 배치의 자동 설정 클래스가 실행됨으로 빈으로 등록된 모든 Job을 검색해서 초기화와 동시에 Job을 수행하도록 구성됨 BatchAutoConfiguration 스프링 배치가 초기화 될 때 자동으로 실행되는 설정 클래스 Job을 수행하는 JobLauncherApplicationRunner빈을 생성 SimpleBatchConfiuguration JobBuilder-Factory와 StepBuilderFactory 생성 스프링 배치의 주요 구성 요소 생성 - 프록시 객체로 생성됨 BatchConfigurerConfiguration BasicBatc..