@HystrixCommand
注解是一个包含@HystrixProperty
注解的数组,HystrixProperty 由 name 和 value 两个属性,数据类型都是字符串,下面是所有的HystrixProperty解析,参考官方wiki。
Execution
这些配置决定了,HystrixCommand如何去执行。
-
execution.isolation.strategy
指示使用哪种隔离策略,有两种:thread(线程池,默认)并发请求受到线程池最大线程限制,semaphore(信号量)受到信号量计数的限制,一般使用线程的方式 -
execution.isolation.thread.timeoutInMilliseconds
用于设置超时的时间,单位是毫秒,默认为1s -
execution.timeout.enabled
用于指示是否启用超时,默认为true -
execution.isolation.thread.interruptOnTimeout
是否在服务超时后中断,默认为true,需要注意在 JVM 中我们无法强制中断一个线程,如果 Hystrix 方法里没有处理中断信号的逻辑,那么中断会被忽略。 -
execution.isolation.thread.interruptOnCancel
是否在服务取消后中断,默认为false -
execution.isolation.semaphore.maxConcurrentRequests
设置信号量最大请求数,需要设置execution.isolation.strategy属性为semaphore,默认为10
Fallback 回退
- fallback.isolation.semaphore.maxConcurrentRequests
fallback回退方法时的最大并发量,超出此并发数的请求会抛出REJECTED_SEMAPHORE_FALLBACK
异常,默认是10 - fallback.enabled
是否启用fallback方法回退,默认为true
Circuit Breaker 熔断器
熔断器相关配置
- circuitBreaker.enabled
是否开启熔断器,默认为true - circuitBreaker.requestVolumeThreshold
在一定的窗口时间内,打开熔断器的最小请求数,例如设置为20,在10s的窗口中,有19个线程,即使19个线程都失败了,也不会打开熔断器。默认为20 - circuitBreaker.sleepWindowInMilliseconds
熔断器打开后,所有请求都会快速失败,然后过一段时间,Hystrix会放行一个请求,进行测试是否恢复,如果恢复则关闭熔断器。这个属性就是用于指定熔断器开启后过多久会进行一次尝试,默认是5000毫秒 - circuitBreaker.errorThresholdPercentage
设置窗口时间内多少百分比的请求失败会打开熔断器,默认是50,也就是超过50%的失败了才会打开 - circuitBreaker.forceOpen、circuitBreaker.forceClosed
是否强制开启或者强制关闭,默认是false