[스프링 배치] 스텝 중지시키기 setTerminateOnly()
- Coding/Spring Batch
- 2021. 9. 25.
반응형
728x90
반응형
StepExecution 스텝 중지
beforeStep 에서 StepExecution 을 가져온 다음, 이후 실행될 스텝에서 setTerminateOnly() 메서드를 사용한다. setTerminateOnly() 메서드를 호출하면, 스텝이 완료된 후 스프링 배치가 종료된다. 아래 예제처럼 if문의 조건에 충족하지 못할시 해당 스텝 완료 후 스프링 배치를 종료시킬 수 있다.
public class TransactionReader implements ItemStreamReader<Transaction> {
...
/**
* afterStep 이 아닌 beforeStep 을 사용하도록 변경하여 StepExecution 을 가져온다.
*/
private StepExecution stepExecution;
...
/* 스텝 빌드 전 stepExecution set */
@BeforeStep
public void beforeStep(StepExecution execution) {
this.stepExecution = execution;
}
...
private Transaction process(FieldSet fieldSet) {
...
/* stepExecution : setTerminateOnly (스텝이 완료된 후 스프링 배치가 종료되도록 지시하는 플래그 설정 ) */
if(expectedRecordCount != this.recordCount) {
this.stepExecution.setTerminateOnly();
}
return result;
}
}
StepExecution 을 이용해 잡이 중지되었다. 위 예제는 ExitStatus.STOPPED 상태로 스텝이 완료된 후 잡이 중지되었다.
반응형
'Coding > Spring Batch' 카테고리의 다른 글
[스프링 배치] 잡의 재시작 방지/재시작 횟수제한/재실행 설정 방법 (0) | 2021.09.25 |
---|---|
[스프링 배치] 오류 던지기 (throw new Exception) (2) | 2021.09.25 |
[스프링 배치] 쿼츠 Quartz 사용하여 배치 스케줄링 (0) | 2021.09.22 |
[스프링 배치] JobLauncherCommandLineRunner 모든 잡 실행 설정 제거 (0) | 2021.09.20 |
[스프링 배치] 잡의 종료 상태 설정 방법 (0) | 2021.09.20 |