问题描述
我正在将Camel与Spring Boot和Micrometer一起使用。在我的其中一条路线中,我正在使用带有Resilience4j的断路器:
.circuitBreaker()
.resilience4jConfiguration()
.timeoutEnabled(true)
.timeoutDuration(2000)
.end()
我正在使用Spring管理的千分尺。在使用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绑定到Micrometer上,或更抽象地将Resilience4j中的指标抽象化?
我想到的唯一其他可能的解决方案是手动管理所有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>
解决方法
您为什么不能使用我们的Spring Boot 2 Starter? 入门程序会自动配置CircuitBreakerRegistry,MeterRegistry并允许进行外部配置。