一、什么情况下会触发fallback方法?
名字 |
描述 |
触发fallback |
EMIT |
值传递 |
NO |
SUCCESS |
执行完成,没有错误 |
NO |
FAILURE |
执行抛出异常 |
YES |
TIMEOUT |
执行开始,但没有在允许的时间内完成 |
YES |
BAD_REQUEST |
执行抛出HystrixBadRequestException |
NO |
SHORT_CIRCUITED |
断路器打开,不尝试执行 |
YES |
THREAD_POOL_REJECTED |
线程池拒绝,不尝试执行 |
YES |
SEMAPHORE_REJECTED |
信号量拒绝,不尝试执行 |
YES |
二、fallback方法在什么情况下会抛出异常
名字 |
描述 |
抛异常 |
FALLBACK_EMIT |
Fallback值传递 |
NO |
FALLBACK_SUCCESS |
Fallback执行完成,没有错误 |
NO |
FALLBACK_FAILURE |
Fallback执行抛出出错 |
YES |
FALLBACK_REJECTED |
Fallback信号量拒绝,不尝试执行 |
YES |
FALLBACK_MISSING |
没有Fallback实例 |
YES |
三、hystrix dashboard界面监控参数
四、配置信息(default或HystrixCommandKey)最常用的几项
超时时间(默认1000ms,单位:ms)
(1)hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds
在调用方配置,被该调用方的所有方法的超时时间都是该值,优先级低于下边的指定配置
(2)hystrix.command.HystrixCommandKey.execution.isolation.thread.timeoutInMilliseconds
在调用方配置,被该调用方的指定方法(HystrixCommandKey方法名)的超时时间是该值
线程池核心线程数
hystrix.threadpool.default.coreSize(默认为10)
Queue
(1)hystrix.threadpool.default.maxQueueSize(最大排队长度。默认-1,使用SynchronousQueue。其他值则使用 LinkedBlockingQueue。如果要从-1换成其他值则需重启,即该值不能动态调整,若要动态调整,需要使用到下边这个配置)
(2)hystrix.threadpool.default.queueSizeRejectionThreshold(排队线程数量阈值,默认为5,达到时拒绝,如果配置了该选项,队列的大小是该队列)
注意:如果maxQueueSize=-1的话,则该选项不起作用
断路器
(1)hystrix.command.d