-2
是否有可能从异常中恢复,然后再次使用Spring重试重试?弹簧重试和恢复
在Java中,会像
try{
doSomething(); // throws Exception
}catch(Exception e){
recoverException();
doSomething(); // OK
}
谢谢!
是否有可能从异常中恢复,然后再次使用Spring重试重试?弹簧重试和恢复
在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
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豆和使用execute()方法,从错误中恢复。
当然是。这正是重试的目的。阅读本教程。 http://www.baeldung.com/spring-retry – pvpkiran
@pvpkiran RetryTemplate是我在找什么? :) – jpadilladev
在这种情况下,我使用了一个带有RetryTemplate的'侦听器'。监听器正在调用上面的'recoverException',然后调用callback.doWithRetry。 RetryTemplate的正确方法是什么? – jpadilladev