微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法投射到类 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker

如何解决无法投射到类 org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker

我在 Gradle 中使用 Spring Boot 2.4。

以下是我定义依赖项的方式:

compile 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j'

它工作正常,但是当我添加时:

implementation 'org.springframework.cloud:spring-cloud-starter-sleuth'

我收到此错误

java.lang.classCastException: class org.springframework.cloud.sleuth.instrument.circuitbreaker.TraceCircuitBreaker cannot be cast to class org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker (org.springframework.cloud.sleuth.instrument.circuitbreaker.TraceCircuitBreaker and org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreaker are in unnamed module of loader 'app')
        at org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreakerFactory$$EnhancerBySpringcglib$$a7735aed.create(<generated>) ~[spring-cloud-circuitbreaker-resilience4j-2.0.0.jar:2.0.0]

有人知道出了什么问题吗?

解决方法

我最近遇到了同样的问题。这是我解决问题的方法:

我使用 Resilience4JCircuitBreakerFactory 来创建断路器。

@Autowired
private Resilience4JCircuitBreakerFactory circuitBreakerFactory;

...

CircuitBreaker checkStockWithCircutBreaker = circuitBreakerFactory.create("inventory");

一旦我添加了 spring-cloud-starter-sleuth 依赖项,这就不起作用了。使用抽象类 CircuitBreakerFactory 以便 Spring 自动注入可用的适当 CircuitBreakerFactory 实例

@Autowired
private CircuitBreakerFactory circuitBreakerFactory;

...

CircuitBreaker checkStockWithCircutBreaker = circuitBreakerFactory.create("inventory");
,

如 Spring Cloud Sleuth 文档中所述,您必须禁用 sleuth 断路器。只需在 application.properties 中添加以下属性即可解决:spring.seuth.circuitbreaker.enabled=false

文档链接如下:Spring Cloud Sleuth documentation

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。