Spring Batch - Retry

참고 사이트 : http://www.egovframe.org/wiki/doku.php?id=egovframework:rte2:brte:batch_core:skip_repeat_retry

Dead lock에 대한 retry 관련 

<bean id="batchRetryPolicy" class="org.springframework.batch.retry.policy.ExceptionClassifierRetryPolicy">
<property name="policyMap"> 
<map>
<entry key="org.springframework.dao.DataAccessResourceFailureException">
<bean class="org.springframework.batch.retry.policy.SimpleRetryPolicy">
<property name="maxAttempts" value="20" /> 
</bean>
</entry>
<entry key="org.springframework.dao.DeadlockLoserDataAccessException">
<bean class="org.springframework.batch.retry.policy.SimpleRetryPolicy">
<property name="maxAttempts" value="20" />
</bean>
</entry>
</map>
</property>
  </bean>
  <bean id="batchRetryTemplate" class="org.springframework.batch.retry.support.RetryTemplate">
    <property name="retryPolicy" ref="batchRetryPolicy"></property>      
    <property name="backOffPolicy" >
    <bean class="org.springframework.batch.retry.backoff.FixedBackOffPolicy">
        <property name="backOffPeriod" value="8000" />
    </bean>
    </property>    
    </bean>    
    <bean id="batchRetryAdvice" class="org.springframework.batch.retry.interceptor.RetryOperationsInterceptor">
    <property name="retryOperations" ref="batchRetryTemplate"></property>
    </bean>
    <aop:config>                  
<aop:pointcut id="launching" expression="execution(* org.springframework.batch.item.support.CompositeItemWriter.write(..))"/>
   <aop:advisor pointcut-ref="launching" advice-ref="batchRetryAdvice" order="-1"/>
    </aop:config>

1. retry를 수행할 Exception 지정
2. backOffPolicy는 wait를 지정 할 수 있음..
3. aop를 CompositeItemWriter.write에 반영 (composite이라 ... retry범위가 애매해서 지정함)

댓글

이 블로그의 인기 게시물

Spring Batch - JobParameters Default Value 만들기

Hsqldb Server 재기동 시 오류