SpringCloud详解 第三章 服务容错保护 Hystrix(六)
本章介绍HystrixCommand 属性详解
我们可以根据实现 HystrixCommand 的不同方式将配置方法分为如下两类。
当通过继承的方式实现时, 可使用 Setter 对象来对请求命令的属性进行设置, 比如下面的例子:
public HelloCommand(RestTemplate restTemplate, HashMap paramMap) { super(com.netflix.hystrix.HystrixCommand.Setter.withGroupKey( HystrixCommandGroupKey.Factory.asKey("helloCommand")).andCommandPropertiesDefaults( HystrixCommandProperties.Setter().withExecutionTimeoutInMilliseconds(5000))); this.restTemplate = restTemplate; this.map = paramMap; }
当通过注解的方法实现时, 只需使用 @HystrixCommand 中的 command Properties 属性来设置, 比如:
@HystrixCollapser(batchMethod = "findAll", collapserProperties = {@HystrixProperty(name = "timerDelayInMilliseconds", value = "100")})
具体的参数配置还可以分为
- Command属性:主要用来控制HystrixCommand命令的行为。包括隔离策略配置、超时时间配置等。
- fallback配置:用来控制HystrixComrnand.getFallback ()的执行。 这些属性同时适用于线程池的信号量的隔离策略。包括getFallback 方法执行的最大并发数、服务降级策略是否启用等。
- circuitBreaker配置:用来控制HystrixCircuitBreaker的行为。包括熔断最小请求数、休眠时间窗等。
- metrics配置:与 HystrixCommand 和 HystrixObservableCommand 执行中捕获的指标信息有关。包括滚动时间窗的长度、滚动时间窗统计指标信息时划分“桶”的数量等
- requestContext配置:涉及HystrixCommand使用的HystrixRequestContext的设置。包括是否开启请求缓存,是否执行和事件记录到日志等。
- collapser属性:用来控制命令合并相关的行为。包括一 次请求合并批处理中允许的最大请求数、每个命令延迟的时间等。
- threadPool属性:用来控制Hy strix命令所属线程池的配置。包括执行命令线程池的核心线程数,该值也就是命令执行的最大并发量等。
更加详细的信息可以参阅 《Spring Cloud微服务实战》。参考 HystrixCommandProperties 类。