问题描述
我已经通过resilience4j断路器工厂bean进行了如下配置。但是我无法获得ovveride事件监听器示例的打开,关闭等功能。请帮助
@Bean
public Customizer<Resilience4JCircuitBreakerFactory> globalCustomConfiguration() {
CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
.failureRateThreshold(Float.parseFloat(failureRateThreshold))
.waitDurationInOpenState(Duration.ofMillis(Long.parseLong(waitDurationInOpenState)))
.slidingWindowSize(Integer.parseInt(slidingWindowSize)).build();
TimeLimiterConfig timeLimiterConfig = TimeLimiterConfig.custom()
.timeoutDuration(Duration.ofSeconds(Long.parseLong(timelimiterDuration))).build();
// the circuitBreakerConfig and timeLimiterConfig objects
return factory -> factory.configureDefault(id -> new Resilience4JConfigBuilder(id)
.timeLimiterConfig(timeLimiterConfig).circuitBreakerConfig(circuitBreakerConfig).build());
}
解决方法
我建议使用resilience4j-spring-boot2
。它提供了很多功能,例如注释支持,外部配置,指标等等-> https://resilience4j.readme.io/docs/getting-started-3
我们的启动器支持以下内容:
您可以添加一个RegistryEventConsumer
bean,以便将事件使用者添加到新创建的实例中。
例如,可以将RegistryEventConsumer添加到CircuitBreakerRegistry,以便将日志记录事件使用者注册到每个新创建的CircuitBreaker实例。
@Bean
public RegistryEventConsumer<CircuitBreaker> myRegistryEventConsumer() {
return new RegistryEventConsumer<CircuitBreaker>() {
@Override
public void onEntryAddedEvent(EntryAddedEvent<CircuitBreaker> entryAddedEvent) {
entryAddedEvent.getAddedEntry().getEventPublisher().onEvent(event -> LOG.info(event.toString()));
}
@Override
public void onEntryRemovedEvent(EntryRemovedEvent<CircuitBreaker> entryRemoveEvent) {
}
@Override
public void onEntryReplacedEvent(EntryReplacedEvent<CircuitBreaker> entryReplacedEvent) {
}
};
}