【问题标题】:How to switch on and off @Recover method in Spring Retry?如何在 Spring Retry 中打开和关闭 @Recover 方法?
【发布时间】:2019-01-11 06:16:30
【问题描述】:

我希望根据属性文件中的标志打开/关闭@Recover 方法。该怎么做?

其实我并没有使用注解(@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));
}

【问题讨论】:

    标签: java spring spring-retry


    【解决方案1】:

    这是不可能的。

    当然,您的@Recover 方法可以根据属性重新抛出(或不抛出)异常。

    【讨论】:

    • 这正是我所做的。我会用解决方案更新问题,谢谢!
    • 我已经用解决方案更新了问题。如果我能做些什么来改进我的方法,请告诉我。
    • 看起来不错,只是您的恢复器除了忽略错误之外什么都不做。也许这就是你想要的,但一般来说,人们想做其他事情,或者至少记录问题。
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 2019-01-18
    • 2014-09-30
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2019-09-04
    相关资源
    最近更新 更多