有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何配置Resilience4j Spring starter中的事件

我已经通过resilience4j断路器工厂bean进行了如下配置。但我无法获得一个函数来验证事件侦听器示例的打开、关闭等。请帮忙

@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());
}

共 (1) 个答案

  1. # 1 楼答案

    我建议使用resilience4j-spring-boot2。它提供了许多功能,如注释支持、外部配置、度量等->https://resilience4j.readme.io/docs/getting-started-3

    我们的starter支持以下功能:

    可以添加RegistryEventConsumerbean,以便将事件使用者添加到新创建的实例中。 例如,您可以将RegistryEventConsumer添加到CircuitBreakerRegistry,以便将日志记录事件使用者注册到每个新创建的断路器实例

    @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) {
    
            }
        };
    }