微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Spring MVC的断路器注释非Spring-boot

如何解决使用Spring MVC的断路器注释非Spring-boot

我正在尝试在spring-mvc项目中使用@CircuitBreaker批注,但它似乎不起作用。 Resilience4j注释是否可以在传统的非春季启动设置中使用?

@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-spring。它为您提供了许多@Configuration类。

您需要导入配置类:

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

CircuitBreakerConfiguration很重要,因为它配置了需要的CircuitBreakerAspect bean,这样注释才能起作用。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。