Java Spring重试和恢复
是否可以从异常中恢复,然后使用Spring retry再次重试 在Java中,类似于Java Spring重试和恢复,java,spring,spring-retry,Java,Spring,Spring Retry,是否可以从异常中恢复,然后使用Spring retry再次重试 在Java中,类似于 try{ doSomething(); // throws Exception }catch(Exception e){ recoverException(); doSomething(); // OK } @Component public class CustomRetryListener extends RetryListenerSupport { @Override
try{
doSomething(); // throws Exception
}catch(Exception e){
recoverException();
doSomething(); // OK
}
@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
}
}
谢谢 最后
我创建了一个RetryListener并将其添加到我的RetryTemplate中。当抛出某个异常时,我使用OneError方法从RetryListener中恢复,然后RetryTemplate将自动重试
差不多
try{
doSomething(); // throws Exception
}catch(Exception e){
recoverException();
doSomething(); // OK
}
@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
}
}
现在,您可以在任何地方插入RetryTemplatebean,并使用execute()方法从错误中恢复。一个更简单的替代方法,使用:
RetryPolicy RetryPolicy=new RetryPolicy();
Failsafe.with(retryPolicy).get(()->doSomething());
当然可以。这正是重试所做的。完成本教程@pvpkiran是RetryTemplate我在找什么?:)在本例中,我使用了带有RetryTemplate的“侦听器”。侦听器正在调用上面的“recoverException”,然后调用callback.doWithRetry。使用RetryTemplate的方法正确吗?我不确定您到底在寻找什么。在您的情况下使用“@Retryable”和“@Recover”应该很好(据我所知很少)@pvpkiran据我所知,只有在Retryable完成所有重试后才会调用Recover。我想“修复”我的方法引发的异常,然后再次调用此方法。这是,我想在重试的中间。工作时,我将使用我的代码更新此问题。