【问题标题】:circuit breaker annotation with Spring mvc(NOT Spring-boot)带有 Spring mvc 的断路器注释(不是 Spring-boot)
【发布时间】:2021-02-09 12:20:33
【问题描述】:

我正在尝试在 spring-mvc 项目中使用 @CircuitBreaker 注释,但它似乎不起作用。 弹性4j 注释是否适用于传统的非弹簧启动设置?

@Bean
public CircuitBreaker edocCircuitBreaker() {
    LOGGER.info("Creating Circuit");
    CircuitBreakerConfig circuitBreakerConfig = CircuitBreakerConfig.custom()
            .slowCallDurationThreshold(Duration.ofMillis(1000))
            .minimumNumberOfCalls(2)
            .slidingWindowSize(2)
            .failureRateThreshold(100)
            .build();
    CircuitBreakerRegistry circuitBreakerRegistry = CircuitBreakerRegistry.of(circuitBreakerConfig);
    CircuitBreaker serviceClientCircuitBreaker =  circuitBreakerRegistry.circuitBreaker("ClientCircuitBreaker");
    serviceClientCircuitBreaker.getEventPublisher().onStateTransition(this::serviceCircuitOpenHanlder);
    return serviceClientCircuitBreaker;
}



@CircuitBreaker(name="ClientCircuitBreaker")
public String sendAndReceive(String request, RequestParameters parameters) throws RuntimeException {

    StreamSource source = new StreamSource(new StringReader(request));
    StreamResult result = new StreamResult(new StringWriter());
    
    
    .....
    
    

【问题讨论】:

    标签: resilience4j


    【解决方案1】:

    您应该使用resilience4j-spring。它为您提供了很多@Configuration 类。

    您需要导入配置类:

    @Import({ CircuitBreakerConfiguration.class, RetryConfiguration.class, TimeLimiterConfiguration.class, BulkheadConfiguration.class }
    

    CircuitBreakerConfiguration 很重要,因为它配置了所需的 CircuitBreakerAspect bean,以便注释正常工作。

    您必须创建一个@Bean,它使用您的外部配置属性文件并填充并返回CircuitBreakerConfigurationProperties

    在resilience4j-spring-boot2中,我们使用@EnableConfigurationProperties(CircuitBreakerProperties.class)自动配置它

    【讨论】:

    • 我在 CircuitBreakerConfiguration 之上导入了 FallbackConfiguration 和 SpelResolverConfiguration 以成功加载弹簧上下文。但是,调用 @CircuitBreaker 注释的 bean 方法时,CircuitBreakerAspect.circuitBreakerAroundAdvice 没有被接受。我究竟做错了什么?这是我的设置:stackoverflow.com/questions/70810306/…
    猜你喜欢
    • 2020-01-27
    • 2010-10-04
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多