使用 Spring Boot 为 Resilience4J 的断路器配置 Bean

Posted

技术标签:

【中文标题】使用 Spring Boot 为 Resilience4J 的断路器配置 Bean【英文标题】:Bean Configuration for Circuit Breaker of Resilience4J Using Spring Boot 【发布时间】:2020-07-07 03:19:33 【问题描述】:

我想将我的断路器配置从 application.yml 文件移动到一些配置 java 文件作为 bean 声明,因为它使 application.yml 文件很大,我可以从 applciation.yml 中删除配置吗?使用配置注释来定义断路器配置。 我有如下代码的配置 java 文件:

@Configuration
@Component
public class CircuitBreakConfig 

  @Bean
  public CircuitBreaker defaultCircuitBreaker() 
    CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
      .failureRateThreshold(50)
      .slidingWindowSize(5)
      .waitDurationInOpenState(Duration.ofMillis(6000))
      .recordExceptions(IOException.class, TimeoutException.class,DataIntegrityViolationException.class)
      .build();
  // Create a CircuitBreakerRegistry with a custom global configuration
  CircuitBreakerRegistry circuitBreakerRegistry = 
     CircuitBreakerRegistry.of(circuitBreakerConfig);

  // Get or create a CircuitBreaker from the CircuitBreakerRegistry 
  // with the global default configuration
   return circuitBreakerRegistry.circuitBreaker("default"); 
  


在我的服务文件中,我正在注释断路器的方法,例如

@CircuitBreaker(name = "default", fallbackMethod = "fallback")
    public Employee createEmployeeDefinition(Employee emp)  throws Exception
        if(Objects.nonNull(sample))
            return EmployeeRepository.save(sample);
        
        return null;
    

    public Employee fallback(Employee emp,Exception ex) throws Exception
        System.out.println(ex.getClass()+"  "+ex.getMessage() );
        return null;
    

使用当前的实现,我的断路器无法达到打开状态。请给我一些建议

【问题讨论】:

【参考方案1】:

请设置 minimumNumberOfCalls 属性

【讨论】:

欢迎来到 SO!这个答案非常简短。您能否详细说明一下,可能带有代码示例?这如何解决问题?感谢您的澄清。

以上是关于使用 Spring Boot 为 Resilience4J 的断路器配置 Bean的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot - spring-boot-starter-mail 为 Smartermail 发送电子邮件不起作用

为 spring-session-jdbc 使用现有的 Spring Boot 数据源

将现有的 Spring 应用程序转换为 Spring-Boot

飞舞的spring boot2(52)——Spring Boot Gradle插件

在 spring-boot 中使用 kotlin 挂起函数创建名称为“requestMappingHandlerMapping”的 bean 时出错

spring boot 2.0之使用spring boot