2017-01-26 10 views
0

Я попытался свернуть самый простой сценарий повторения. Повторение игнорируется при исполнении.@Retryable не запускается

Application.java:

@SpringBootApplication 
@EnableRetry 
public class Application extends SpringBootServletInitializer { 
//... 

Это в пределах класса обслуживания:

public Boolean processItem() { 
    Long id = 999L; 
    try { 
     retrieveItemWithRetry(id); 
     return true; 
    } catch (NoResultException e) { 
     return false; 
    } 
} 

@Retryable(include=NoResultException.class, backoff = @Backoff(delay = 500, maxDelay = 3000), maxAttempts = 5) 
private void retrieveItemWithRetry(Long id) { 
    retrieveItem(id); 
} 

private OrderRequest retrieveItem(Long id) { 
    throw new NoResultException(); 
}  

ответ

4

Внутренние вызовы в @Retryable методы (в пределах того же класса) не retryable; см. my answer here со вчерашнего дня, что объясняет, почему.

Кроме того, методы @Retryable должны быть общедоступными.

+0

Спасибо @Gary, для записи мне также пришлось убедиться, что класс с '@ Retryable' был' @ Component', введенным вызывающему классу. –

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

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