반응형
목차
잡의 재시작 방지
스프링 배치의 모든 잡은 실패하거나 중지될 때 다시 실행할 수 있었다. 스프링 배치는 기본적으로 이렇게 동작하므로 우리는 다시 실행하면 안되는 잡이 있을시 재시작을 방지해야한다.
preventRestart()
preventRestart() 메서드를 호출하여 잡이 실패하거나 어떤 이유로 중지된 경우에도 다시 실행할 수 없다.
/**
* 잡 실행
* @return
*/
@Bean
public Job transactionJob() {
return this.jobBuilderFactory.get("transactionJob")
.preventRestart() /* 잡은 기본적으로 재시작이 가능하도록 구성되어있다. 잡의 재시작 방지 */
.start(...)
.next(...)
.build();
}
잡의 재시작 횟수 제한
startLimit(n) : 재시작 횟수를 n번으로 제한한다.
@Bean
public Step importTransactionFileStep() {
return this.stepBuilderFactory.get("importTransactionFileStep")
.startLimit(2) /* 잡의 재시작 횟수 제한 */
.<Transaction, Transaction>chunk(100)
.reader(...)
.writer(...)
.listener(...) /* 스텝 빌드하기 전 실행할 리스너 등록 */
.build();
}
완료된 스텝 재실행하기
allowStartIfComplete(true)
스텝이 잘 완료됐더라도, 다시 실행할 수 있어야 할때 사용한다. 주의할 점은, 잡의 ExitStatus 가 COMPLETE 라면 모든 스텝에 allowStartIfComplete(true) 를 적용하더라도 이와 관계없이 잡 인스턴스는 다시 실행할 수 없다.
잡이 재실행될때 무조건 실행되어야할 스텝이 존재할 경우 설정한다.
@Bean
public Step importTransactionFileStep() {
return this.stepBuilderFactory.get("importTransactionFileStep")
.<Transaction, Transaction>chunk(100)
.reader(...)
.writer(...)
.allowStartIfComplete(true) /* 잡이 재시작될시, 스텝이 다시 실행될 수 있도록 재시작 허용 */
.listener(...) /* 스텝 빌드하기 전 실행할 리스너 등록 */
.build();
}
반응형
'Spring > Spring Batch' 카테고리의 다른 글
[스프링 배치] 쿼츠 Quartz 사용하여 배치 스케줄링 (0) | 2022.05.05 |
---|---|
[Spring Batch] Spring Batch에서 Multithread로 Step 실행하기 (0) | 2022.05.05 |
[Spring Batch] 대량의 데이터 넣을 때 (bulk insert) (0) | 2022.05.05 |
[Spring Batch] Chunk 기반 처리 (0) | 2022.05.05 |
스프링배치_완벽가이드_3장_거래명세서 생성 (0) | 2021.07.15 |