스프링배치 StepContribution

반응형
728x90
반응형

StepContribution

- chunk 프로세스의 변경 사항을 버퍼링한 후 StepExecution 의 상태를 업데이트하는 도메인 객체다.

 

- BATCH_STEP_EXECUTION 테이블을 한번 확인하고 오자.

https://devfunny.tistory.com/477?category=820618 

 

스프링배치가 제공하는 배치 메타데이터 저장 테이블 (BATCH_JOB_INSTANCE, BATCH_JOB_EXECUTION, BATCH_JOB_EXEC

JobRepository 스프링 배치가 제공하는 여러 데이터베이스 테이블을 사용하여 배치 메타데이터를 저장한다. 총 6개의 테이블이 존재하는데, 각 테이블 정보에 대해 알아보자. BATCH_JOB_INSTANCE 테이블

devfunny.tistory.com

 

step StepContribution 
ItemReader readCount : 성공적으로 read된 데이터 개수
readSkipCount : read에 실패해서 skip된 횟수
ItemProcessor filterCount : 성공적으로 filtering된 데이터 개수
processSkipCount : process에 실패해서 skip된 횟수
ItemWriter writeCount : 성공적으로 write된 데이터 개수
writeSkipCount : write에 실패해서 skip된 횟수

 

Stepcontribution 이 StepExecution이 완료되는 시점에 apply() 메서드를 호출하여 속성들의 상태를 최종 업데이트 한다.

...
    @Bean
    public Step contributionTestStep1() {
        return stepBuilderFactory.get("contributionTestStep1")
                .tasklet(new Tasklet() {
                    @Override
                    public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                        /* contribution 의 정보를 마지막에 StepExecution의 apply()를 호출하여 상태를 업데이트 한다. */
                        // StepExecution.apply(contribution)
                        System.out.println(contribution.getExitStatus());
                        System.out.println(contribution.getReadCount());

                        System.out.println("contributionTestStep1");
                        return RepeatStatus.FINISHED;
                    }
                })
                .build();
    }
...

 

 

반응형

Designed by JB FACTORY