【发布时间】:2020-12-20 05:52:06
【问题描述】:
我将 Camel 与 Spring Boot 和 Micrometer 一起使用。在我的一条路线中,我正在使用带有 Resilience4j 的断路器:
.circuitBreaker()
.resilience4jConfiguration()
.timeoutEnabled(true)
.timeoutDuration(2000)
.end()
我正在使用 Spring 管理的 Micrometer。在使用 Hystrix 迁移到 Resilience4j 之前,我可以简单地将其绑定到我的 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 自动连接到千分尺:
@Configuration()
public class MetricsRegistryBuilder {
@Autowired
private CircuitBreakerRegistry circuitBreakerRegistry;
}
不幸的是 Spring 没有找到 CircuitBreakerRegistry Bean。
因此,我的问题是,在将 Camel 与 Spring 结合使用时,如何将 CircuitBreakerRegistry 或更抽象的 Resilience4j 指标绑定到 Micrometer?
我能想到的唯一其他可能的解决方案是手动管理所有 Resilience4j 配置,定义 bean,然后将其交给我的 Camel 配置。考虑到绑定我的 Resilience4j 指标的简单任务,这在我看来似乎需要大量工作和样板代码。
我正在使用以下版本:
- 骆驼 3.4.3
- Spring 2.3.3.RELEASE
- 测微计 1.5.4
我也在使用camel spring boot starter依赖:
<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>
【问题讨论】:
标签: spring-boot apache-camel spring-camel micrometer resilience4j