如何指定哪个@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
}

另一种可能有效的方法是定义和使用不同的异常类型,例如Method1ExceptionMethod3Exception.