Как интегрировать метрики Resilience4j в Micrometer в Camel Spring Boot

Я использую Camel с пружинным ботинком и микрометром. В одном из своих маршрутов я использую автоматический выключатель с Resilience4j:

.circuitBreaker()
            .resilience4jConfiguration()
            .timeoutEnabled(true)
            .timeoutDuration(2000)
            .end()

Я использую микрометр, управляемый Spring. Прежде чем перейти на resilience4j с Hystrix, я мог просто привязать его к моему реестру Micrometer:

@Configuration()
public class MetricsRegistryBuilder {
    @Bean
    HystrixMetricsBinder registerHystrixMetricsBinder() {
        return new HystrixMetricsBinder();
    }
}

К сожалению, для Resilience4j связующего не существует. Существует некоторая документация о том, как привязать Resilience4j CircuitBreakerRegistry к Micrometer: https://resilience4j.readme.io/docs/micrometer, а также как это сделать с помощью Spring: https://resilience4j.readme.io/docs/getting-started-3

Я попытался просто автоматически подключить Resilience4j CircuitBreakerRegistry к Micrometer:

@Configuration()
public class MetricsRegistryBuilder {
@Autowired
private CircuitBreakerRegistry circuitBreakerRegistry;
}

К сожалению, Spring не находит компонент CircuitBreakerRegistry.

Поэтому мой вопрос в том, как привязать CircuitBreakerRegistry или более абстрактные метрики из Resilience4j к Micrometer при использовании Camel с Spring?

Единственное другое возможное решение, которое я мог придумать, - это управлять всей конфигурацией Resilience4j вручную, определять bean-компоненты и передавать их в мою конфигурацию Camel. Хотя мне кажется, что это требует большого количества работы и стандартного кода, учитывая простую задачу привязки моих показателей Resilience4j.

Я использую следующие версии:

  • Верблюд 3.4.3
  • Весна 2.3.3.РЕЛИЗ
  • Микрометр 1.5.4

Также я использую зависимости стартера загрузки верблюжьей пружины:

    <dependency>
      <groupId>org.apache.camel.springboot</groupId>
      <artifactId>camel-micrometer-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.camel.springboot</groupId>
        <artifactId>camel-resilience4j-starter</artifactId>
    </dependency>

person Dennis    schedule 01.09.2020    source источник


Ответы (1)


Почему вы не можете использовать наш Spring Boot 2 Starter? Стартер автоматически настраивает CircuitBreakerRegistry, MeterRegistry и позволяет выполнять внешнюю настройку.

person Robert Winkler    schedule 04.09.2020
comment
Я разберусь с этим! Интересно, как стартер будет работать вместе с реализацией верблюда, поскольку я уже использую стартер верблюда Resilience4j ... - person Dennis; 27.09.2020