2016-06-23 7 views
1
@Retryable(value = Exception.class, maxAttempts = 3) 
public Boolean sendMessageService(Request request){ 
    ... 
} 

maxAttempts аргумент в @Retryable аннотация жестко закодирована. Могу ли я прочитать это значение из файла application.properties? неЧитать maxAttempts of spring @Retryable from application.properties file

что-то вроде

@Retryable(value = Exception.class, maxAttempts = "${MAX_ATTEMPTS}") 

ответ

1

Нет; это невозможно установить через свойство при использовании аннотации.

Вы можете проволоку до RetryOperationsInterceptor боба вручную и применить его к методе с использованием Spring AOP ...

EDIT

<bean id="retryAdvice" class="org.springframework.retry.interceptor.RetryOperationsInterceptor"> 
    <property name="retryOperations"> 
     <bean class="org.springframework.retry.support.RetryTemplate"> 
      <property name="retryPolicy"> 
       <bean class="org.springframework.retry.policy.SimpleRetryPolicy"> 
        <property name="maxAttempts" value="${max.attempts}" /> 
       </bean> 
      </property> 
      <property name="backOffPolicy"> 
       <bean class="org.springframework.retry.backoff.ExponentialBackOffPolicy"> 
        <property name="initialInterval" value="${delay}" /> 
        <property name="multiplier" value="${multiplier}" /> 
       </bean> 
      </property> 
     </bean> 
    </property> 
</bean> 

<aop:config> 
    <aop:pointcut id="retries" 
     expression="execution(* org..EchoService.test(..))" /> 
    <aop:advisor pointcut-ref="retries" advice-ref="retryAdvice" 
     order="-1" /> 
</aop:config> 

Где EchoService.test это метод, который вы хотите применить повторные попытки.

 Смежные вопросы

  • Нет связанных вопросов^_^