【问题标题】:Missing metrics when programmatically creating a circuitbreaker以编程方式创建断路器时缺少指标
【发布时间】:2020-06-05 19:27:37
【问题描述】:

我想用编程方法定义一个断路,所以我做了:

@Configuration
public class MyCircuitBreakerConfig {

@Bean
public CircuitBreakerRegistry myRegistry() {
    CircuitBreakerRegistry registry = CircuitBreakerRegistry.ofDefaults();
    registry.circuitBreaker("mycircuit", circuitConfig());
    return registry;
}

问题是,即使它工作正常,我在指标中得到以下信息:

"components" : {
"circuitBreakers" : {
  "status" : "UNKNOWN"
}

同时,如果我在属性文件中定义它:

resilience4j:
 circuitbreaker:
      configs:
        myconfig:
          ...
      instances:
       mycircuit:
          base-config: myconfig

我看得出来。问题可能是什么? 我正在使用resilience4j-spring-boot2 依赖项。

【问题讨论】:

    标签: spring-boot resilience4j


    【解决方案1】:

    您不得创建自己的 CircuitBreakerRegistry。 Spring Boot AutoConfiguration 创建一个您应该使用的实例。如果需要,只需将现有的 CircuitBreakerRegistry 注入(自动装配)到您的代码中。

    您可以按如下方式覆盖默认值

    resilience4j.circuitbreaker:
        configs:
            default:
                slidingWindowSize: 100
                permittedNumberOfCallsInHalfOpenState: 10
                waitDurationInOpenState: 10000
                failureRateThreshold: 60
                eventConsumerBufferSize: 10
    

    【讨论】:

    • 我只需要设置默认值..怎么做?
    • @phate 我认为您不能在应用程序配置中使用纯默认值配置断路器。至少,我不知道该怎么做。您必须覆盖一个属性(使用其默认值)。
    • 如果我已经有 application.properties,它会从 yaml 中提取它吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多