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 类。

posted @ 2020-10-02 18:17  跃小云  阅读(99)  评论(0编辑  收藏  举报