如何在 Spring 重试中打开和关闭@Recover 方法?
How to switch on and off @Recover method in Spring Retry?
我希望根据属性文件中的标志切换 @Recover
方法 on/off。怎么做?
实际上,我没有使用注释(@Retryable
/ @Recover
),而是使用 RetryTemplate
.
解决方案
我正在使用以下方法作为所有恢复调用的包装方法。
private <T> T genericRecover(RetryContext context) {
if(this.useRecoverMethod) {
return null;
}
throw new RuntimeException(context.getLastThrowable());
}
此处 useRecoverMethod
布尔标志是从属性文件中读取的。
public Resource<Camera> myRetyableMethod(Long cameraId) {
return retryTemplate.execute(context -> anApiCallMethod(param),
context -> genericRecover(context));
}
不可能。
但是,当然,您的 @Recover
方法可以根据 属性.
重新抛出(或不抛出)异常
我希望根据属性文件中的标志切换 @Recover
方法 on/off。怎么做?
实际上,我没有使用注释(@Retryable
/ @Recover
),而是使用 RetryTemplate
.
解决方案
我正在使用以下方法作为所有恢复调用的包装方法。
private <T> T genericRecover(RetryContext context) {
if(this.useRecoverMethod) {
return null;
}
throw new RuntimeException(context.getLastThrowable());
}
此处 useRecoverMethod
布尔标志是从属性文件中读取的。
public Resource<Camera> myRetyableMethod(Long cameraId) {
return retryTemplate.execute(context -> anApiCallMethod(param),
context -> genericRecover(context));
}
不可能。
但是,当然,您的 @Recover
方法可以根据 属性.