【问题标题】:Is it possible to use another circuit breaker over fallback method?是否可以使用另一个断路器替代后备方法?
【发布时间】:2020-08-05 04:33:04
【问题描述】:

我需要在基于 java 的微服务中实现断路器,这样如果 backendA 定义了故障数量,则回退方法应该调用另一个 backendB,如果 backendB 也失败了,那么应该有另一个后备方法来从 Java API 本身返回错误。是否可能,更重要的是是否建议实现这样的设计。如果有人可以提供任何参考或示例使用这种模式。我将使用 resilience4j 库来做到这一点。代码结构如下所示:

@CircuitBreaker(name = "backendA", fallbackMethod = "fallback1")
{Method to call backendA}//Threshold value : 10 requests

@CircuitBreaker(name = "backendB", fallbackMethod = "fallback2")
private String fallback1() { Method to call backendB} // Threshold value : 2 requests


private String fallback2() { Method to return error}

【问题讨论】:

    标签: spring-boot design-patterns microservices spring-cloud circuit-breaker


    【解决方案1】:

    创建另一个类和一个调用备用系统的新方法对我有用。基本上不能在同一个类中的回退方法上应用断路器,因此在新类中调用另一个方法并在那里添加断路器,解决了这个问题。

    【讨论】:

      【解决方案2】:

      由于 Spring AOP(代理)的工作方式,这将不起作用。 回退方法不能有注解。

      【讨论】:

      • 是的,我也面临同样的问题。但是,是否不可能使用自定义回退方法调用另一个服务,因为备用服务也可能失败,在这种情况下,系统应该如何表现?
      猜你喜欢
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 2013-08-24
      • 1970-01-01
      • 2019-12-05
      • 2019-02-15
      • 1970-01-01
      • 2014-04-04
      相关资源
      最近更新 更多