Java @对于同样是@Scheduled的@Retryable方法,未发现带恢复注释的方法
我研究了这个问题的答案 但我不明白为什么恢复方法在我的案例中不运行Java @对于同样是@Scheduled的@Retryable方法,未发现带恢复注释的方法,java,spring-boot,spring-retry,Java,Spring Boot,Spring Retry,我研究了这个问题的答案 但我不明白为什么恢复方法在我的案例中不运行 @Service public MyRetryingService { @Scheduled(fixedRate = 10 * 1000) @Retryable(backoff = @Backoff(delay = 100, maxDelay = 101), maxAttempts = 3) public void transferData() { throw new IllegalAr
@Service public MyRetryingService {
@Scheduled(fixedRate = 10 * 1000)
@Retryable(backoff = @Backoff(delay = 100, maxDelay = 101), maxAttempts = 3)
public void transferData() {
throw new IllegalArgumentException();
}
@Recover
public void recover(IllegalArgumentException exception) {
System.out.println("Recovering from a service down");
}
}
我得到这个例外
org.springframework.retry.ExhaustedRetryException: Cannot locate recovery method; nested exception is java.lang.IllegalArgumentException
我在这里遗漏了什么?您使用的是哪个版本的Spring Framework
这是一个最近修复的问题。我正在使用spring boot 1.5.3,它似乎使用spring core 4.3.8.RELEASE。另外请注意,Retry方法正在执行它应该执行的重试操作,但在尝试3次后不会调用Recover方法。我将尝试更新到最新的spring boot,看看这是否会有所改进。谢谢。更新到spring boot 2.0.0.RELEASE的最新版本解决了我的问题,尽管问题中提到的修复版本已经足够了。谢谢。当前的1.5.x版本1.5.10使用SF4.3.14,其中包括修复。但无论如何,迁移到2.0是一个好的举动。