Hystrix进阶篇:断路器参数配置详解(二)

背景

对于 Hystrix 的配置,我们在平时使用过程经常会出现这样的问题,以为理所应当的配置,其实际上并不会起作用。通过复制粘贴的代码,如果没有经过斟酌,可能永远都没有起到其应该起到的作用。这就是我们为何要将 Hystrix 配置搞清楚的原因。

HystrixCommand 注解属性

@HystrixCommand 注解上的属性。对于 HystrixCommand 注解属性,一般有两种方式,一种是给某个类添加全局配置,一种是针对各个方法添加。

全局配置一般需要借助 @DefaultProperties 注解。除了仅针对方法级别的属性以外(commandKey/observableExecutionMode/fallbackMethod),其他的都可以通过该注解来配置。当一个类中有多个 Hystrix 方法时,这种方式可以减少各个方法上都是相同配置的冗余代码。

局部配置一般是通过在方法上添加 @HystrixCommand 并配置注解参数来实现。这种配置的方式的优先级高于全局配置注解 @DefaultProperties

commandKey

唯一标识一个 Hystrix 方法。默认会取被 @HystrixCommand 注解的方法名。建议要起一个全局独一无二的名称,防止多个方法因为 commandKey 名称重复而相互影响。

groupKey

为 Hystrix 方法的分组标识。默认取当前运行时的方法的类名。

threadPoolKey

用来标识一个线程池的 key。默认取 groupKey 的值。一般来说同一个类中共用同一个线程池。若共用同一个线程池的不同的方法,配置了相同的线程池属性,在第一个方法被执行后线程池的属性就已经被固定,因此会以第一个被执行的方法上的配置为主。

fallbackMethod

方法执行时,出现熔断、超时、异常等错误时会触发该属性配置的回退方法。该方法需要保持与 Hystrix 方法的签名和返回值一致。

ignoreExceptions

指定哪些异常需要被 Hystrix 忽略,忽略的异常会被直接抛到方法上层,不会触发 fallbackMethod 回退方法,也不会参与到失败率的统计中而影响熔断的状态。

observableExecutionMode

TODO 搞清楚Observable调用逻辑。

当 Hystrix 命令被包装成 RxJava 的 Observer 异步执行时,此配置指定了 Observable 被执行的模式,默认是 ObservableExecutionMode.EAGER,Observable 会在被创建后立刻执行,而 ObservableExecutionMode.EAGER模式下,则会产生一个 Observable 被 subscribe 后执行。

@HystrixCommand 注解的方法返回值为 Observable 类型或其子类时生效。默认值为 ObservableExecutionMode.EAGER。我们常见的命令都是同步执行的,此配置项可以不配置。

raiseHystrixExceptions

当配置项中包含 HystrixException.RUNTIME_EXCEPTION 时,所有未被忽略的异常统一包装成 HystrixRuntimeException,方便将异常统一处理。默认值为 {}

defaultFallback

默认回退方法,当配置 fallbackMethod 项时此项不会生效,另外,默认回退方法不能有参数,返回值要与 Hystrix方法的返回值一致。

commandProperties

与 Hystrix 命令属性相关的配置。下文会有详细解释。

threadPoolProperties

与 Hystrix 命令执行线程池相关的属性。下文会有详细解释。

命令属性(commandProperties)

commandProperties 的命令属性是由 @HystrixProperty 数组配置组成。其中 @HystrixProperty 是由 namevalue 两个属性构成,并且这两个属性都是字符串类型。其属性都是以 hystrix.command.* 开头,全局默认属性是 hystrix.command.default.*, 具体方法的属性 hystrix.command.HystrixCommandKey(具体CommandKey名).*。具体的配置如下。

执行属性(Execution)

接下来介绍的属性,是控制 HystrixCommand.run() 方法如何执行的属性。

execution.isolation.strategy

该属性表示指定

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值