inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

DB - JdbcPagingItemReader

청크프로세스 조건별로 끝내는 방법

221

dukbabo

작성한 질문수 5

0

안녕하세요

tasket이 아니고

청크프로세스로 테스트를 하고있는데

해당일이 휴일이면 배치를 실행안되게끔하려고 하는데

구현 방법이 있는지요?

제일 처음 일자는 입력받고 일자가 휴일이면 그냥 종료하고

휴일이 아니면 배치를 실행시키려고 합니다.

 

아니면 그냥 system.exit를 해도 되는지 궁금합니다.

정상종료 시키려합니다.

 

휴일이면 system.exit 이렇게 할수있는

명령어가 있는지요?

 

job/ step/ reader 소스 첨가 합니다.

@Bean

public Job job() throws Exception {

return jobBuilderFactory.get(JOB_NAME)

.incrementer(new RunIdIncrementer())

.listener(new JobResponseListener())

.start(autoBillPayResponseStep())

.build();

}

위는 잡이고

아래는 아이템 리더인데요 ^^

휴일인경우에는 그냥 완료 시키고 싶어요 ^^

 

@Bean

@JobScope

public Step autoBillPayResponseStep() throws Exception {

// TODO Auto-generated method stub

return stepBuilderFactory.get("autoBillResponseStep")

.<AutoBillPayResponseDto, Future<AutoBillPayResponseDto>>chunk(CHUNK_SIZE)

.reader(listItemReader(null,null,null))

.processor(asyncItemProcessor(null))

.writer(asyncItemWriter(null))

.build();

}

 

@Bean

@StepScope

public ListItemReader<AutoBillPayResponseDto> listItemReader(AutoBillPayResponseDao autoBillPayResponseDao, @Value("#{jobParameters[toDate]}") String toDate, @Value("#{jobParameters[guBun]}") String guBun) {

// TODO Auto-generated method stub

String baseDay = autoBillPayResponseDao.findByPreWorkDay(toDate);

List<AutoBillPayResponseDto> autoBillPayResponseDto = autoBillPayResponseDao.findBillPayResponse(baseDay, guBun);

return new ListItemReader<>(autoBillPayResponseDto);

}

 

spring-boot spring-batch

답변 1

1

정수원

휴일일 경우에 배치을 실행시키지 않을려면 말 그대로 배치를 실행시키지 않도록 스킵해야 하는데 스프링 부트 배치는 job 을 자동 실행시키기 때문에 조건에 따른 분기를 하기 어렵습니다

그래서 main 혹은 ApplicationRunner 같은 곳에서 스프링 부트가 초기화 될 때 직접 JobLauncher 로 배치를 실행시키는 구문을 작성해야 할 것 같습니다

 

if 휴일이면

배치실행 안함

else

JobLauncher.run(job, jobparameters)

같이 입니다

그리고 배치를 실행하지 않으면 main 함수가 종료하기 때문에 자동으로 어플리케이션이 종료되므로 system.exit() 할 필요는 없습니다

 

참고로 도메인이해 강의에 있는 JobLauncher 챕터와 실전어플리케이션 개발의 맨마지막 챕터를  참고하시기 바랍니다

스프링 배치 버전 질문

0

139

1

소스코드가 어디에 있나요?

0

122

2

트랜잭션 예외

0

101

1

질문이 있습니다.

0

138

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

144

2

여러 JOB 설정하는법

0

158

2

강의 자료 다른 방법 있을까요?

0

163

1

JobExecution과 JobExecutionContext와의 관계

0

197

2

특정 job만 실행

1

267

1

Batch 성능 질문

0

158

1

ItemReaderAdapter 종료

0

87

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

187

2

Spring Batch 배포 질문

0

253

2

spring batch 버전

0

238

2

retry count 관련 질문

0

183

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

341

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

242

2

Multithread step과 AsyncItemProcessor

0

208

2

job 재실행

0

259

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

191

1

Multi-threaded-step과 Partitioning 차이 확인

0

183

2

jdbcCursorReader, jdbcPagingReader 질문

0

149

1

step muti-thread 질문

0

114

1

itemSteam open update close 질문

0

117

1