spring-cloud / spring-cloud-circuitbreaker

Spring Cloud Circuit Breaker API and Implementations
Apache License 2.0
332 stars 111 forks source link

Can't integrate with Spring Cloud Hoxton.SR3 #62

Closed carter-ya closed 4 years ago

carter-ya commented 4 years ago

Describe the bug The Spring Cloud version is Hoxton.SR3. When I use resilience4j instead of hystrix, I get some error.

java.lang.IllegalStateException: Annotation @EnableCircuitBreaker found, but there are no implementations. Did you forget to include a starter?

my pom.xml:

  <dependencies>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-gateway</artifactId>
    </dependency>
    <dependency>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
      <exclusions>
        <exclusion>
          <artifactId>spring-cloud-netflix-hystrix</artifactId>
          <groupId>org.springframework.cloud</groupId>
        </exclusion>
      </exclusions>
      <groupId>org.springframework.cloud</groupId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-circuitbreaker-reactor-resilience4j</artifactId>
    </dependency>
  </dependencies>

Sample Hytrix spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.netflix.hystrix.HystrixAutoConfiguration,\
org.springframework.cloud.netflix.hystrix.HystrixCircuitBreakerAutoConfiguration,\
org.springframework.cloud.netflix.hystrix.ReactiveHystrixCircuitBreakerAutoConfiguration,\
org.springframework.cloud.netflix.hystrix.security.HystrixSecurityAutoConfiguration

org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker=\
org.springframework.cloud.netflix.hystrix.HystrixCircuitBreakerConfiguration

So I think the fix is:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JAutoConfiguration,\
org.springframework.cloud.circuitbreaker.resilience4j.ReactiveResilience4JAutoConfiguration

org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker=\
org.springframework.cloud.circuitbreaker.resilience4j.SomeConfigurationClass
ryanjbaxter commented 4 years ago

@EnableCircuitBreaker is not part of spring-cloud-circuitbreaker it is only part of Spring Cloud Netflix

maarten-blokker commented 3 years ago

@ryanjbaxter There is no documentation stating this anywhere, maybe this is the cause of the confusion?

carter-ya commented 3 years ago

@ryanjbaxter This is really a troubling problem. I think there needs to be a solution.