@HystrixCommand(fallbackMethod = "onError",
threadPoolProperties = {
@HystrixProperty(name = "coreSize",value = "20"),
@HystrixProperty(name = "allowMaximumSizeToDivergeFromCoreSize",value="true"),
@HystrixProperty(name = "maximumSize",value="80"),
@HystrixProperty(name = "maxQueueSize",value="40")
},
commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "30000") })
解释:
threadPoolProperties = {
@HystrixProperty(name = "coreSize",value = "20"),
@HystrixProperty(name = "allowMaximumSizeToDivergeFromCoreSize",value="true"),
@HystrixProperty(name = "maximumSize",value="80"),
@HystrixProperty(name = "maxQueueSize",value="40")
}
threadPoolProperties 配置线程池 coreSize=20 核心线程数为20,maximumSize=80 最大线程数为80,maxQueueSize=40 最大等待队列数为40
allowMaximumSizeToDivergeFromCoreSize=true 超过最大等待数量抛出异常
commandProperties = { @HystrixProperty(name = "execution.isolation.thread.timeoutInMilliseconds", value = "30000") 超时时间是30秒
fallbackMethod = "onError", 熔断发送时执行第二逻辑返回的方法名是onError()
onError()如下:
private ResultVo onError(@RequestBody BaseBean baseBean, Throwable e) {
if (e != null) {
logger.error("内部错误:", e);
return new ResultVo(ResponseStateCode.API_REQUEST_ERROR.getCode(),
ResponseStateCode.API_REQUEST_ERROR.getMsg());
}
return new ResultVo(ResponseStateCode.API_REQ_OVERTIME.getCode(), ResponseStateCode.API_REQ_OVERTIME.getMsg());
}
maven依赖jar
<!-- Hystrix -->
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-core</artifactId>
<version>1.5.12</version>
</dependency>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-metrics-event-stream</artifactId>
<version>1.5.12</version>
</dependency>
<dependency>
<groupId>com.netflix.hystrix</groupId>
<artifactId>hystrix-javanica</artifactId>
<version>1.5.12</version>
</dependency>
<!-- Hystrix -->