티스토리 뷰

spring batch 를 이용하면 JobBuilderFactory, StepBuilderFactory 를 이용해 코드를 작성하게 된다. 이때 factory 가 제공해주는 다양한 속성들이 있는데, 나같은 경우 자동완성으로 뜨긴뜨는데 뭐하는건지 명확히 모르고 그냥 사용하던 것만 사용하고 있었다. 이것들을 한번 정리해본다.

 

preventRestart

spring batch 는 job name 과 job parameters 를 이용해 job 인스턴스를 식별한다. job 이 실패했을경우 동일한 식별정보로 job 실행요청이 들어오면 실패한 step 부터 job 을 실행하게되는데 preventRestart 가 설정되어있으면 예외를 일으켜 잡이 다시 실행되는걸 막는다.

 

allowStartIfComplete

A job 에 a, b, c step 이 있다고 가정했을때 첫번째 A 실행시 a, b 가 성공하고 c 가 실패했다고 하자. 두번째 A 가 실행되면 성공했던 a, b 는 넘어가고 c step 만 실행하게되는데 이때 b step 에 해당 속성이 true 로 설정되어있으면 b 는 이미 성공한 이력이 있음에도 실행되게된다. 이 시나리오에서는 a 만 건너뛰고 b, c 가 실행되게된다. 참고로 동일한 상황에서 a 만 해당 속성이 true 로 되어있으면 두번째 실행시 중간에 있는 b 만 건너뛰고 a, c 가 실행되게 된다.

 

startLimit

재시작 가능한 횟수. 실패-재시도 상황에서 특정 step 이 이 설정을 초과하여 실행하게되면 예외를 발생시킨다.

 

faultTolerant

내결함성 설정 가능한 빌더를 반환한다.

아래에서 추가로 설명할 skip, skipLimit, noSkip, retry, retryLimit, noRollback 속성을 설정할 수 있다.

 

skip

step 실행 중 예외가 발생해도 step 을 실행시키지 않을 class 를 받는다.

 

skipLimit

skip 에서 설정한 예외가 발생해도 넘어갈 횟수를 지정한다. 이 속성을 10으로 설정했는데 skip 에서 설정한 예외가 11번 발생하면 step 은 실패한다.

 

noSkip

특정 예외를 skip 하도록 하는것보다 Exception 과 같이 모든 예외에 대해 skip 을 해놓고, 특정 예외를 skip 하지않도록 설정하는 블랙리스트방식이 필요할때도 있다. 그때는 noSkip 속성을 이용하면 된다.

 

retry

retry 에 전달된 예외가 발생한 경우엔 해당 step 을 retry 한다. retry 로 인해 성공하면 해당 step 은 성공이다.

 

retryLimit

retry 시도할 횟수를 설정한다.

 

noRollback

chunk oriented process 에서 결국 롤백 대상은 writer 가 된다. noRollback 에 exception 타입을 전달하면 해당 예외가 발생해도 롤백을 진행하지 않는다.

 

transactionAttribute

step 별 트랜잭션을 설정한다.

 

 

 

댓글
댓글쓰기 폼