如何指定哪个@Recover 方法用于哪个@Retryable 方法?
How to specify which @Recover method to use for which @Retryable method?
所以,我有一个 spring 启动应用程序,在我的服务 class 中,有多种方法我正在使用 @Retryable
重试。我还使用 @Recover
注释为它们创建了各自的恢复方法。
现在,很多这些服务方法在方法签名中具有相同的属性;因此,他们的恢复方法最终也具有相同的签名。
这导致的问题是重试耗尽时的恢复方法选择与预期不符。我看到当所有重试后方法 3 失败时,在方法 1 下声明的恢复方法被调用。
有没有办法控制恢复方法的选择?我已经看到 RetryTemplate 的使用,其中明确提供了 RetryCallback 和 RecoveryCallback,这是唯一的方法吗?
谢谢!
代码如下所示:
@Retryable
public boolean method1(String arg1) {
// do something
}
@Recover
public boolean method1Recovery(Exception e, String arg1) {
//do something
}
.
.
.
@Retryable
public boolean method3(String arg1) {
// do something
}
@Recover
public boolean method3Recovery(Exception e, String arg1) {
//do something
}
另一种可能有效的方法是定义和使用不同的异常类型,例如Method1Exception
… Method3Exception
.
所以,我有一个 spring 启动应用程序,在我的服务 class 中,有多种方法我正在使用 @Retryable
重试。我还使用 @Recover
注释为它们创建了各自的恢复方法。
现在,很多这些服务方法在方法签名中具有相同的属性;因此,他们的恢复方法最终也具有相同的签名。
这导致的问题是重试耗尽时的恢复方法选择与预期不符。我看到当所有重试后方法 3 失败时,在方法 1 下声明的恢复方法被调用。
有没有办法控制恢复方法的选择?我已经看到 RetryTemplate 的使用,其中明确提供了 RetryCallback 和 RecoveryCallback,这是唯一的方法吗?
谢谢!
代码如下所示:
@Retryable
public boolean method1(String arg1) {
// do something
}
@Recover
public boolean method1Recovery(Exception e, String arg1) {
//do something
}
.
.
.
@Retryable
public boolean method3(String arg1) {
// do something
}
@Recover
public boolean method3Recovery(Exception e, String arg1) {
//do something
}
另一种可能有效的方法是定义和使用不同的异常类型,例如Method1Exception
… Method3Exception
.