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