2017-11-28 7 views
1

테스트 응용 프로그램을 실행하여 타사 REST 끝점에 HTTP POST 제출을하고 조언을 사용하여 다시 시도를 구현했습니다. simpleretryplicy 및 backoffpolicy와 함께 기본 requesthandleradvice를 exponential.how로 설정하여 각 재시도 실패시 메일을 보내는 메소드를 호출했습니다. 그것을하기위한 예는 좋을 것입니다.REST 게시 요청시 각 재시도 실패시 메일을 보내려합니다.

이것이 나를 위해 일한 방법입니다. 빠른 답장을 보내 주셔서 감사의 @artem는 :

<bean class="org.springframework.retry.support.RetryTemplate"> 
       <property name="backOffPolicy"> 
        <bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy"> 
         <property name="initialInterval"> 
          <value type="java.lang.Long">#{new Long('${initialRetryInterval}')}</value>   <!-- in milliSeconds --> 
         </property> 
         <property name="multiplier"> 
          <value type="java.lang.Double">#{new Double('${retryExpMultiplier}')}</value> 
         </property> 
         <property name="maxInterval"> 
         <value type="java.lang.Long">#{new Long('${.maxRetryInterval}')}</value> 

      <!-- in milliSeconds --> 
        </property> 
       </bean> 
      </property> 
      <property name="retryPolicy"> 
       <bean class="org.springframework.retry.policy.SimpleRetryPolicy"> 
        <property name="maxAttempts"> 
         <value type="java.lang.Integer">#{new Integer('${maxRetryAttempts}')}</value> 
        </property> 
       </bean> 
      </property> 
      <property name="listeners"> 
       <bean class="com.example.listeners.SampleRetryListener"/> 
      </property> 
     </bean> 

답변

0

RequestHandlerRetryAdvice이 차례로 공급 될 수 있으며, RetryTemplate, 함께 제공 할 수 있습니다

/** 
* Register an additional listener. 
* 
* @param listener the {@link RetryListener} 
* @see #setListeners(RetryListener[]) 
*/ 
public void registerListener(RetryListener listener) { 

그리고 마지막이 있습니다

/** 
* Called after every unsuccessful attempt at a retry. 
* 
* @param context the current {@link RetryContext}. 
* @param callback the current {@link RetryCallback}. 
* @param throwable the last exception that was thrown by the callback. 
* @param <T> the return value 
* @param <E> the exception to throw 
*/ 
<T, E extends Throwable> void onError(RetryContext context, RetryCallback<T, E> callback, Throwable throwable); 

은 을 구독자로 사용하여 MessageChannel으로 보낼 수 있습니다.

+0

빠른 응답을 보내 주셔서 감사합니다. 나는 이것을 시도 할 것이다. 나는 그것이 효과가 있다고 믿는다. 곧 업데이트 예정 –