我使用的是Spring Boot 2.4和Gradle。
下面是我如何定义我的依赖关系:
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]有谁知道哪里出了问题吗?
发布于 2021-06-27 05:57:28
就在最近我遇到了同样的问题。下面是我修复这个问题的方法:
我使用Resilience4JCircuitBreakerFactory来创建CircuitBreaker。
@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");发布于 2021-07-03 21:07:27
正如Spring Cloud Sleuth文档中所提到的,您必须禁用侦测断路器。在application.properties中添加以下属性即可解决此问题:spring.seuth.circuitbreaker.enabled=false
https://stackoverflow.com/questions/66441321
复制相似问题