我正在尝试在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());
.....
答案 0 :(得分:0)
您应该使用resilience4j-spring
。它为您提供了许多@Configuration
类。
您需要导入配置类:
@Import({ CircuitBreakerConfiguration.class, RetryConfiguration.class, TimeLimiterConfiguration.class, BulkheadConfiguration.class }
CircuitBreakerConfiguration
很重要,因为它配置了需要的CircuitBreakerAspect
bean,这样注释才能起作用。
您必须创建一个@Bean
,该文件使用您的外部配置属性文件并填充并返回CircuitBreakerConfigurationProperties
。
在resilience4j-spring-boot2中,我们使用@EnableConfigurationProperties(CircuitBreakerProperties.class)
自动配置它