IT/development

[springBoot] spring batch preventRestart option

알 수 없는 사용자 2023. 11. 14. 20:37
반응형

목차

    아래 포스팅에서 이어진 내용입니다.

     

    [springBoot] spring batch scheduler modularization (feat. DB)

    목차 아래 포스팅에서 이어진 내용입니다. [springBoot] spring batch scheduler jpaRead/Writer (feat. DB) 목차 아래 포스팅에서 이어진 내용입니다. [springBoot] spring scheduler simpleBatch (feat. scheduler) 목차 Batch1 🙂 p

    yaga.tistory.com


    spring batch에서는 기본으로 같은 jobParameter의 job이라도 종료상태가 실패인 경우 성공할 때까지 재수행이 가능

    허나 실패해도 재수행 되면 안되는 job도 있을 수 있으니 이 경우 사용하면 될 듯 하다.

    JobConfig 🤗

    package com.dev.lsy.springpreventex;
    
    import lombok.RequiredArgsConstructor;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.batch.core.Job;
    import org.springframework.batch.core.Step;
    import org.springframework.batch.core.StepContribution;
    import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
    import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
    import org.springframework.batch.core.scope.context.ChunkContext;
    import org.springframework.batch.core.step.tasklet.Tasklet;
    import org.springframework.batch.repeat.RepeatStatus;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @RequiredArgsConstructor
    @Slf4j
    @Configuration
    public class JobConfig {
    
        private final JobBuilderFactory jobBuilderFactory;
        private final StepBuilderFactory stepBuilderFactory;
    
        @Bean
        public Job job1() {
            return jobBuilderFactory.get("job1")
                    .start(step1())
                    .next(step2())
                    //재시작 중지 옵션
                    .preventRestart()
                    .build();
        }
    
        @Bean
        public Step step1() {
            return stepBuilderFactory.get("step1")
                    .tasklet(new Tasklet() {
                        @Override
                        public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                            log.info("step1 excuted~~~~~");
                            return RepeatStatus.FINISHED;
                        }
                    })
                    .build();
        }
    
        @Bean
        public Step step2() {
            return stepBuilderFactory.get("step2")
                    .tasklet((contribution, chunkContext) -> {
                        //강제 예외 발생
                        throw new RuntimeException("step2 was failed~");
    //                    return RepeatStatus.FINISHED;
                    })
                    .build();
        }
    }

    개인 스터디 기록을 메모하는 공간이라 틀린점이 있을 수 있습니다.

    틀린 점 있을 경우 댓글 부탁드립니다.

    reference: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%B0%B0%EC%B9%98


    다음 내용

     

    [springBoot] spring batch JobScope, StepScope

    아래 포스팅에서 이어진 내용입니다. [springBoot] spring batch allowStartIfComplete 목차 아래 포스팅에서 이어진 내용입니다. [springBoot] spring batch preventRestart option 목차 아래 포스팅에서 이어진 내용입니

    yaga.tistory.com

    반응형