![](/img/trans.png)
[英]Spring-Retry cannot locate recovery method when implement an interface
[英]Spring Retry and Recovery
是否可以从异常中恢复,然后使用 Spring Retry 重试?
在 Java 中,会是这样的
try{
doSomething(); // throws Exception
}catch(Exception e){
recoverException();
doSomething(); // OK
}
谢谢!!
最后,
我创建了一个RetryListener并将其添加到我的RetryTemplate中。 当引发某些异常时,我从RetryListener的onError方法中恢复,然后RetryTemplate将自动重试。
就像是
@Component
public class CustomRetryListener extends RetryListenerSupport {
@Override
public <T, E extends Throwable> void onError(RetryContext context,
RetryCallback<T, E> callback,
Throwable throwable) {
//recover from throwable
}
}
和重试模板bean
@Bean
public RetryTemplate retryTemplate(CustomRetryListener listener) {
RetryTemplate retryTemplate = new RetryTemplate();
SimpleRetryPolicy retryPolicy = new SimpleRetryPolicy();
retryPolicy.setMaxAttempts(2);
retryTemplate.setRetryPolicy(retryPolicy);
retryTemplate.registerListener(listener);
return retryTemplate;
}
现在,您可以在任意位置注入retryTemplate bean,并使用execute()方法从错误中恢复。
使用Failsafe的更简单的选择:
RetryPolicy<Object> retryPolicy = new RetryPolicy<>().withMaxAttempts(2);
Failsafe.with(retryPolicy).get(() -> doSomething());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.