resilience4j: How to configure resilience4j.circuitbreaker in @Bean without properties.yml
Thanks for raising a Resilience4j issue. Please provide a brief description of your problem along with the versions you are using. If possible, please also consider putting together a complete JUnit test that reproduces the issue.
Resilience4j version:
Java version: 8
Problem description:
Hi, I’m trying to configure resilience without the need to put the settings in the properties.yml. I created my configuration bean but the circuit is not working
@Slf4j
@Configuration
@Component
@RefreshScope
public class CircuitBreakerAutoConfiguration {
@Bean
public CircuitBreakerRegistry defaultGenesisCircuitBreaker(
@Value("${application.circuit-breaker.genesis.default."
+ "ringBufferSizeInClosedState:30}")
int ringBufferSizeInClosedState,
@Value("${application.circuit-breaker.genesis.default."
+ "ringBufferSizeInHalfOpenState:10}")
int ringBufferSizeInHalfOpenState,
@Value("${application.circuit-breaker.genesis.default."
+ "failureRateThreshold:50}")
long failureRateThreshold,
@Value("${application.circuit-breaker.genesis.default."
+ "waitDurationInOpenState:10000}")
long waitDurationInOpenState) {
log.info("Configuring custom Genesis Circuit Breaker genesis.default");
return CircuitBreakerRegistry.of(circuitBreakerConfig());
}
@Bean
public CircuitBreakerConfig circuitBreakerConfig() {
log.info("circuitBreakerConfig");
return CircuitBreakerConfig.custom()
.minimumNumberOfCalls(2)
.failureRateThreshold(50)
.waitDurationInOpenState(Duration.ofMillis(1000))
.permittedNumberOfCallsInHalfOpenState(2)
.slidingWindowSize(2)
.build();
}
@Bean
public CircuitBreaker defaultCircuitBreaker() {
CircuitBreakerConfig config = CircuitBreakerConfig.custom()
.minimumNumberOfCalls(2)
.build();
return CircuitBreaker.of("default", config);
}
}
I need to abstract this configuration to put it within a framework of my own. The only way it works is when I put the settings in the properties
resilience4j.circuitbreaker:
configs:
default:
registerHealthIndicator: false
slidingWindowSize: 10
minimumNumberOfCalls: 5
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 22 (7 by maintainers)
@RobWin I am able to create the circuit breaker bean with all the configuration properties Code: registry.circuitBreaker(name, config)
But not able to set the property “registerHealthIndicator”. Even didn’t find this property available in CircuitBreakerConfig class as well
Any idea on this?
Like @RobWin indicated, I Autowired the CircuitBreakerRegistry instead of creating my own through CircuitBreakerRegistry.of(config). This allowed me to use registry.circuitBreaker(name, config) to add new circuit breakers with my custom configurations in my code without any yaml entries.