I am trying to implement circuit breaker pattern in my spring boot application. I am referring to https://redhat-scholars.github.io/spring-boot-k8s-tutorial/spring-boot-tutorial/05-resiliency.html this tutorial. I am getting above error. Not sure what point I am missing.

import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JCircuitBreakerFactory;
import org.springframework.cloud.circuitbreaker.resilience4j.Resilience4JConfigBuilder;
import org.springframework.cloud.client.circuitbreaker.Customizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.github.resilience4j.circuitbreaker.CircuitBreakerConfig;
import io.github.resilience4j.timelimiter.TimeLimiterConfig;

@Configuration
public class CircuitBreakerConfiguration {

private CircuitBreakerConfig circuitBreakerConfig() {
return CircuitBreakerConfig.custom()
          .failureRateThreshold(2)
          .waitDurationInOpenState(Duration.ofMillis(1000))
          .slidingWindowSize(2)
          .build();
}


// Create a Customizer<Resilience4JCircuitBreakerFactory> bean to configure the Resilience4JCircuitBreakerFactory
@Bean
@ConditionalOnMissingBean
public Customizer<Resilience4JCircuitBreakerFactory> resilience4jCircuitBreakerCustomizer() {
    return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
            .circuitBreakerConfig(circuitBreakerConfig())
            .timeLimiterConfig(timeLimiterConfig())
            .build());
 }

private TimeLimiterConfig timeLimiterConfig() {
    TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.custom()
            .timeoutDuration(Duration.ofSeconds(4))
            .build();
    return timeLimiterConfig;
}

Few of the dependencies

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-resilience4j:2.0.2'
testImplementation 'org.springframework.boot:spring-boot-starter-test'

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.kafka:spring-kafka'

implementation 'io.github.resilience4j:resilience4j-spring-boot2:1.7.0'
implementation 'io.github.resilience4j:resilience4j-circuitbreaker:1.7.0'
implementation 'io.github.resilience4j:resilience4j-consumer:1.7.0'
implementation 'io.github.resilience4j:resilience4j-core:1.7.0'
implementation 'io.github.resilience4j:resilience4j-spring:1.7.0' 
implementation 'io.github.resilience4j:resilience4j-annotations:1.7.0'
implementation 'io.github.resilience4j:resilience4j-timelimiter:1.7.0'

Using constructor injection I am trying to inject bean into my class

private CircuitBreaker circuitBreaker; 


public ProductEventConsumer(Resilience4JCircuitBreakerFactory circuitBreakerFactory) {
     this.circuitBreaker = circuitBreakerFactory.create("circuitbreaker");
}
0

There are 0 best solutions below