我只是使用 @Retryable 注释设置了最简单的 Spring 应用程序。
@Service
public class MyRestService {
@Autowired
private RestTemplate restTemplate;
@Retryable(Exception.class)
public void runRest() {
ResponseEntity<String> response = restTemplate.getForEntity(
"https://dat.sparkfun.com/streams/dZ4EVmE8yGCRGx5XRX1W.json",
String.class);
}
@Recover
public void recover(Exception e) {
System.out.println("Recover=" + e);
}
}
根据 Spring 文档(https://github.com/spring-projects/spring-retry),runRest方法应该运行三次,因为它会抛出异常(特别是 org.springframework.web.client.ResourceAccessException)。但是,我没有观察到任何重试。使用 @Retryable 作为参数 ResourceAccessException 没有帮助。