使用 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 时出错