【问题标题】:Resilience4J - global fallback methodResilience4J - 全局后备方法
【发布时间】:2021-02-05 13:05:24
【问题描述】:

关于 Resilience4j 与 SpringBoot starter 结合的问题。

在此处的文档中:https://resilience4j.readme.io/docs/getting-started-3 它提到:“只有当多个方法具有相同的返回类型并且您想一劳永逸地为它们定义相同的回退方法时,您才能定义一个带有异常参数的全局回退方法。”

谁有例子吗?

我查看了演示 https://github.com/resilience4j/resilience4j-spring-boot2-demo 并且可以看到重复的方法

 private Flux<String> fluxFallback(Exception ex) {
        return Flux.just("Recovered: " + ex.toString());
    }

我有同样的情况,我有大约十二个类都共享一个相同的后备方法。某事的默认列表。

看演示,我将复制粘贴这个默认列表后备十二次。我相信有一种更聪明的方法可以做到这一点。就是找不到。

请问有人有sn-p吗?

谢谢

【问题讨论】:

    标签: java spring-boot resilience4j


    【解决方案1】:

    全局后备方法仅适用于单个类。 目前没有办法定义一个可以被多个类使用的全局回退方法。

    您只能将回退逻辑添加到单个类中,这样您就不必多次复制和粘贴回退逻辑。

    【讨论】:

    • 明白。谢谢。您是否有任何将回退逻辑提取到单个类中的示例,我的意思是,注释上会有什么? fallback=SingleClass.fallback ?另外,有什么方法可以重新抛出异常?我有一个控制器建议,e 可以帮助拦截所有后备并避免复制粘贴
    • 通过将回退逻辑提取到单个类中,我的意思是:只需创建一个新类,添加 @Component 注释并将其注入您已定义回退方法并委托给新类的类中.与 ControllerAdvice 类似,但与服务级别和协议无关。 ControllerAdvice 通常是特定于 HTTP 的。
    猜你喜欢
    • 2021-01-19
    • 1970-01-01
    • 2017-03-29
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多