作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Resilience4J 的新手,正在尝试与 Spring boot 集成。
我的应用程序有几个远程系统调用。我希望所有远程调用都使用相同的断路器配置。
我正在使用 java 配置和功能样式来装饰带有 resilience4J 运算符的远程调用。目前,我为所有远程系统调用定义了一个断路器和一个重试 bean。
@Bean
public CircuitBreakerConfig circuitBreakerConfig() {
return CircuitBreakerConfig.custom().slidingWindowType(SlidingWindowType.COUNT_BASED).slidingWindowSize(6)
.failureRateThreshold(50).waitDurationInOpenState(Duration.ofSeconds(10))
.permittedNumberOfCallsInHalfOpenState(3).recordExceptions(HttpClientErrorException.class, HttpServerErrorException.class,TimeoutException.class,SdkClientException.class,AmazonServiceException.class,SQLException.class,JDBCException.class, DataAccessException.class).build();
}
@Bean
public CircuitBreaker circuitBreaker(CircuitBreakerConfig circuitBreakerConfig) {
return CircuitBreaker.of("circuit-config", circuitBreakerConfig);
}
@Bean
public RetryConfig retryConfig() {
return RetryConfig.custom().maxAttempts(3).waitDuration(Duration.ofMillis(1000))
.retryExceptions(HttpClientErrorException.class, HttpServerErrorException.class,TimeoutException.class,SdkClientException.class,AmazonServiceException.class,SQLException.class,JDBCException.class, DataAccessException.class).build();
}
@Bean
public Retry retry() {
return Retry.of("retry-config", retryConfig());
}
Decorators.ofRunnable(systemA::callA)
.withCircuitBreaker(circuitBreaker)
.withRetry(retry)
.decorate()
.run();
Decorators.ofRunnable(systemB::callB)
.withCircuitBreaker(circuitBreaker)
.withRetry(retry)
.decorate()
.run();
但我观察到断路器(及其内部环形缓冲区)以这种方式在系统 A 和系统 B 之间共享。因此,一个远程系统的故障会影响另一个远程系统的故障阈值。
我需要为每个远程系统配备一个单独的断路器,以便为每个远程系统维护故障阈值。但电路 Beaker 配置在远程系统中保持不变。
实现此目标的最佳做法是什么?
最佳答案
您应该使用 Spring Boot 2 Starter 和外部配置。然后将 CircuitBreakerRegistry 注入(inject)您的代码或使用注释。
关于resilience4j - 如何在 Resilience4J 中实现具有相同配置的多个断路器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61734937/
我在 NodeJS 中的多台计算机上的服务器端服务中使用 Resilient。 弹性客户端调用的 API 之一受到速率限制。受到速率限制的请求会在响应中收到特定的 header /值,因此很容易判断何
我是一名优秀的程序员,十分优秀!