@HystrixCommand(
fallbackMethod = "queryActivityInfoFallBack",
ignoreExceptions = {BaseKnownException.class},
commandProperties = {
//超时时间上限(b端会调促销接口,设置时间稍长些)
@HystrixProperty(name = EXECUTION_ISOLATION_THREAD_TIMEOUT_IN_MILLISECONDS, value = "4000"),
//统计滚动窗口的持续时间,以毫秒为单位。
// 该时间用于断路器判断健康度时需要收集信息的持续时间,断路器在收集指标信息的时候会根据设置的时间窗长度拆分成多个“桶”来累计各个度量值,每个“桶”记录一段时间内的采集指标。)
@HystrixProperty(name = METRICS_ROLLING_STATS_TIME_IN_MILLISECONDS, value = "10000"),
//设置在一个滚动窗口中,打开断路器的最少请求数
@HystrixProperty(name = CIRCUIT_BREAKER_REQUEST_VOLUME_THRESHOLD, value = "50"),
//在滚动时间窗中,在请求数量超过此阀值的前提下,如果失败比率超过这个值,则把断路器设置为“打开”状态,否则就设置为“关闭”状态
@HystrixProperty(name = CIRCUIT_BREAKER_ERROR_THRESHOLD_PERCENTAGE, value = "30"),
//属性用来设置当断路器打开之后的休眠时间窗
@HystrixProperty(name = CIRCUIT_BREAKER_SLEEP_WINDOW_IN_MILLISECONDS, value = "1000")
},
threadPoolProperties = {
@HystrixProperty(name = CORE_SIZE, value = "10"),
@HystrixProperty(name = MAXIMUM_SIZE, value = "10"),
//是否允许最大线程数生效
@HystrixProperty(name = ALLOW_MAXIMUM_SIZE_TO_DIVERGE_FROM_CORE_SIZE, value = "true")
}
)
groupKey的默认值是使用@HystrixCommand标注的方法所在的类名
commandKey的默认值是@HystrixCommand标注的方法名,即每个方法会被当做一个HystrixCommand
threadPoolKey的默认值是groupKey,而groupKey默认值是@HystrixCommand标注的方法所在类名
可以通过在类上加@DefaultProperties( threadPoolKey="xxx" )设置默认的threadPoolKey
可以通过@HystrixCommand( threadPoolKey="xxx" ) 指定当前HystrixCommand实例的threadPoolKey
threadPoolKey用于从线程池缓存中获取线程池 和 初始化创建线程池,由于默认以groupKey即类名为threadPoolKey,那么默认所有在一个类中的HystrixCommand共用一个线程池
网友评论