-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