使用回退的Resilience4j断路器

时间:2019-12-17 15:43:01

标签: java spring-boot

我的服务必须呼叫另一个服务。但是,如果该服务关闭,则必须调用同一服务的后备URL。就像该服务已部署在两个数据中心中一样。如果一切正常,则在主DC断开时将其称为辅助DC。

我正在尝试使用回弹力4j中的断路器来实现这一目标。 要求就像

  1. 主要DC中的服务已启动->呼叫主要服务
  2. 主DC中的服务已关闭,辅助DC中的服务已启动->不要呼叫主服务​​,而仅呼叫辅助服务。
  3. 主DC中的服务已关闭,辅助DC中的服务已关闭->不要调用任何服务并返回默认响应。

如果服务在最近y秒内失败了x%,则可以确定服务是启动还是关闭。

您能帮我怎么做?我在我的应用程序中使用Resilience4j和spring-boot。

1 个答案:

答案 0 :(得分:1)

您可以使用为Vavr's Try and use recover method提供的支持

circuitBreaker
    .decorateTrySupplier(() -> Try.ofSupplier(() -> "Call Service 1."))
    .get()
    .recover(CallNotPermittedException.class, exception -> "Call Service 2")
    .get();