如何在Resilience4j Spring Starter中配置事件

问题描述

我已经通过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) {

        }
    };
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...