服务提供者【test-provider8001】
Openfeign远程调用服务提供者搭建
文章地址http://t.csdnimg.cn/06iz8
相关接口
测试远程调用:http://localhost:8001/payment/index
服务消费者【test-consumer-resilience4j8004】
Openfeign远程调用消费者搭建
文章地址http://t.csdnimg.cn/06iz8
依赖
<!-- resilience4j -->
<dependency>
<groupId>io.github.resilience4j</groupId>
<artifactId>resilience4j-spring-cloud2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-circuitbreaker-resilience4j</artifactId>
</dependency>
application.yml
resilience4j.circuitbreaker:
configs:
default:
# 熔断器打开的失败阈值
failureRateThreshold: 30
# 默认滑动窗口大小,circuitbreaker使用基于计数和时间范围欢动窗口聚合统计失败率
slidingWindowSize: 10
# 计算比率的最小值,和滑动窗口大小去最小值,即当请求发生5次才会计算失败率
minimumNumberOfCalls: 5
# 滑动窗口类型,默认为基于计数的滑动窗口
slidingWindowType: TIME_BASED
# 半开状态允许的请求数
permittedNumberOfCallsInHalfOpenState: 3
# 是否自动从打开到半开
automaticTransitionFromOpenToHalfOpenEnabled: true
# 熔断器从打开到半开需要的时间
waitDurationInOpenState: 2s
recordExceptions:
- java.lang.Exception
instances:
# 异常熔断比例降级
# 实例名称:自己定义的名称,对应@CircuitBreaker的name
backendA:
# 采用上面的default配置
baseConfig: default
OrderController【控制层】
/**
* 异常比例熔断降级
*
* @return
*/
@GetMapping("/citcuitBackend")
@CircuitBreaker(name = "backendA", fallbackMethod = "citcuitBackendFallback")
//异常比例熔断降级注解【会按照配置重试此接口】:name:对应application.yml的重试机制配置名称;fallbackMethod:对应的降级方法
public String citcuitBackend() {
log.info("************ 进入方法 ***********");
String index = paymentFeignService.paymentIndex();
log.info("************ 离开方法 ***********");
return index;
}
/**
* 异常比例熔断降级降级方法
*
* @param e
* @return
*/
public String citcuitBackendFallback(Throwable e) {
e.printStackTrace();
return "客官服务繁忙,稍等一会。。。。";
}
相关接口
测试异常比例熔断降级:http://localhost:8004/order/citcuitBackend