以编程方式创建断路器时缺少指标

Missing metrics when programmatically creating a circuitbreaker

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

@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 依赖项。

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

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

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