SpringBoot结合熔断器

使用方式

pom依赖增加

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-hystrix</artifactId>

<version>1.4.5.RELEASE</version>

</dependency>

代码

在启动类中添加:

@EnableHystrix

@EnableCircuitBreaker

添加注解:@HystrixCommand

设置熔断方法:fallbackMethod
@PostMapping(value = "product/list")
@HystrixCommand(
        fallbackMethod = "productListHystrixMethod",
        commandKey = "productListHystrix",
        threadPoolKey = "productListHystrix"
)
public ResponseEntity<?> productList(@RequestBody Map<String, String> paramMap, HttpServletRequest request) {
    setLocalRequest(request);
log.info("product/list:{}", paramMap);
return omsClient.productList(paramMap);
}

public ResponseEntity<?> productListHystrixMethod(Map<String, String> paramMap,
                                                  HttpServletRequest request,
                                                  Throwable e){
return hystrixResponse(log, "商品列表", e);
}

配置文件

#(熔断)
#初始线程数
hystrix.threadpool.productListHystrix.coreSize = 10
#最大线程数
hystrix.threadpool.productListHystrix.maximumSize = 20
#最大队列数
hystrix.threadpool.productListHystrix.maxQueueSize = 10
#最大队列,还有xx个时触发熔断
hystrix.threadpool.productListHystrix.queueSizeRejectionThreshold = 5
#超时时间
hystrix.command.productListHystrix.execution.isolation.thread.timeoutInMilliseconds = 5000
#熔断持续时间
hystrix.command.productListHystrix.circuitBreaker.sleepWindowInMilliseconds = 5000
#错误比率
#hystrix.command.default.circuitBreaker.errorThresholdPercentage=50

问题

注解参数 fallbackMethod 熔断回调接口使用

fallbackMethod 传参、返回类型必须与@HystrixCommand注解的接口保持一致

注解参数 commandKey 熔断回调接口使用

commandKey 与apollo 配置一致

注解参数 threadPoolKey 熔断回调接口使用

threadPoolKey 与apollo 配置一致

请求header无法获取

描述:

  1. 上游服务,调用下游feign时,下游服务无法获取到header
  2. 添加@HystrixCommand 的接口链路上无法获取到request

解决办法:

在Controller方法参数中新增HttpServletRequest参数,并且强制设置当前线程request

protected void setLocalRequest(HttpServletRequest request) {
    RequestContextHolder.setRequestAttributes(
new ServletRequestAttributes(request)
    );
}
保证上游服务配置熔断,无法保证服务不受影响
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值