SpringCloud中的@HystrixCommand配置

SpringCloud中的@HystrixCommand配置


一、HystrixCommand是什么?

@HystrixCommand

二、All in

1.引入库

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixProperty;
****

2.配置

代码如下(示例):

//========================All in 
@HystrixCommand (fallbackMethod =  "testfallbackMethod" ,
        groupKey =  "testGroupCommand" ,
        commandKey =  "testCommand" ,
        threadPoolKey =  "testThreadPool" ,

        commandProperties = {
                 //  设置隔离策略, THREAD  表示线程池  SEMAPHORE :信号池隔离
                 @HystrixProperty (name =  "execution.isolation.strategy" , value =  "THREAD" ),
                 //  当隔离策略选择信号池隔离的时候,用来设置信号池的大小(最大并发数)
                 @HystrixProperty (name =  "execution.isolation.semaphore.maxConcurrentRequests" , value =  "10" ),
                 //  配置命令执行的超时时间
                 @HystrixProperty (name =  "execution.isolation.thread.timeoutinMilliseconds" , value =  "10" ),
                 //  是否启用超时时间
                 @HystrixProperty (name =  "execution.timeout.enabled" , value =  "true" ),
                 //  执行超时的时候是否中断
                 @HystrixProperty (name =  "execution.isolation.thread.interruptOnTimeout" , value =  "true" ),
                 //  执行被取消的时候是否中断
                 @HystrixProperty (name =  "execution.isolation.thread.interruptOnCancel" , value =  "true" ),
                 //  允许回调方法执行的最大并发数
                 @HystrixProperty (name =  "fallback.isolation.semaphore.maxConcurrentRequests" , value =  "10" ),
                 //  服务降级是否启用,是否执行回调函数
                 @HystrixProperty (name =  "fallback.enabled" , value =  "true" ),
                 //  是否启用断路器
                 @HystrixProperty (name =  "circuitBreaker.enabled" , value =  "true" ),
                 //  该属性用来设置在滚动时间窗中,断路器熔断的最小请求数。例如,默认该值为  20  的时候,
                 //  如果滚动时间窗(默认 10 秒)内仅收到了 19 个请求, 即使这 19 个请求都失败了,断路器也不会打开。
                 @HystrixProperty (name =  "circuitBreaker.requestVolumeThreshold" , value =  "20" ),
                 //  该属性用来设置在滚动时间窗中,表示在滚动时间窗中,在请求数量超过
                 // circuitBreaker.requestVolumeThreshold  的情况下,如果错误请求数的百分比超过 50,
                //  就把断路器设置为  " 打开 "  状态,否则就设置为  " 关闭 "  状态。
                 @HystrixProperty (name =  "circuitBreaker.errorThresholdPercentage" , value =  "50" ),
                 //  该属性用来设置当断路器打开之后的休眠时间窗。 休眠时间窗结束之后,
                 //  会将断路器置为  " 半开 "  状态,尝试熔断的请求命令,如果依然失败就将断路器继续设置为  " 打开 "  状态,
                 //  如果成功就设置为  " 关闭 "  状态。
                 @HystrixProperty (name =  "circuitBreaker.sleepWindowinMilliseconds" , value =  "5000" ),
                 //  断路器强制打开
                 @HystrixProperty (name =  "circuitBreaker.forceOpen" , value =  "false" ),
                 //  断路器强制关闭
                 @HystrixProperty (name =  "circuitBreaker.forceClosed" , value =  "false" ),
                 //  滚动时间窗设置,该时间用于断路器判断健康度时需要收集信息的持续时间
                 @HystrixProperty (name =  "metrics.rollingStats.timeinMilliseconds" , value =  "10000" ),
                 //  该属性用来设置滚动时间窗统计指标信息时划分 " 桶 " 的数量,断路器在收集指标信息的时候会根据
                 //  设置的时间窗长度拆分成多个  " 桶 "  来累计各度量值,每个 " 桶 " 记录了一段时间内的采集指标。
                 //  比如  10  秒内拆分成  10  个 " 桶 " 收集这样,所以  timeinMilliseconds  必须能被  numBuckets  整除。否则会抛异常
                 @HystrixProperty (name =  "metrics.rollingStats.numBuckets" , value =  "10" ),
                 //  该属性用来设置对命令执行的延迟是否使用百分位数来跟踪和计算。如果设置为  false,  那么所有的概要统计都将返回  -1 。
                 @HystrixProperty (name =  "metrics.rollingPercentile.enabled" , value =  "false" ),
                 //  该属性用来设置百分位统计的滚动窗口的持续时间,单位为毫秒。
                 @HystrixProperty (name =  "metrics.rollingPercentile.timeInMilliseconds" , value =  "60000" ),
                 //  该属性用来设置百分位统计滚动窗口中使用  “  桶  ” 的数量。
                 @HystrixProperty (name =  "metrics.rollingPercentile.numBuckets" , value =  "60000" ),
                 //  该属性用来设置在执行过程中每个  “ 桶 ”  中保留的最大执行次数。如果在滚动时间窗内发生超过该设定值的执行次数,
                 //  就从最初的位置开始重写。例如,将该值设置为 100,  滚动窗口为 10 秒,若在 10 秒内一个  “ 桶  ” 中发生了 500 次执行,
                 //  那么该  “ 桶 ”  中只保留 最后的 100 次执行的统计。另外,增加该值的大小将会增加内存量的消耗,并增加排序百分位数所需的计算时间。
                 @HystrixProperty (name =  "metrics.rollingPercentile.bucketSize" , value =  "100" ),
                 //  该属性用来设置采集影响断路器状态的健康快照(请求的成功、 错误百分比)的间隔等待时间。
                 @HystrixProperty (name =  "metrics.healthSnapshot.intervalinMilliseconds" , value =  "500" ),
                 //  是否开启请求缓存
                 @HystrixProperty (name =  "requestCache.enabled" , value =  "true" ),
                 // HystrixCommand 的执行和事件是否打印日志到  HystrixRequestLog  中
                 @HystrixProperty (name =  "requestLog.enabled" , value =  "true" ),
        },
        threadPoolProperties = {
                 //  该参数用来设置执行命令线程池的核心线程数,该值也就是命令执行的最大并发量
                 @HystrixProperty (name =  "coreSize" , value =  "10" ),
                 //  该参数用来设置线程池的最大队列大小。当设置为  -1  时,线程池将使用  SynchronousQueue  实现的队列,
                 //  否则将使用  LinkedBlockingQueue  实现的队列。
                 @HystrixProperty (name =  "maxQueueSize" , value =  "-1" ),
                 //  该参数用来为队列设置拒绝阈值。 通过该参数, 即使队列没有达到最大值也能拒绝请求。
                 //  该参数主要是对  LinkedBlockingQueue  队列的补充 , 因为  LinkedBlockingQueue
                //  队列不能动态修改它的对象大小,而通过该属性就可以调整拒绝请求的队列大小了。
                 @HystrixProperty (name =  "queueSizeRejectionThreshold" , value =  "5" ),
        }
)
public  String testConsumer() {
	//注解修饰此方法
     return  "hello testConsumer" ;
}
public  String testFallbackMethod()
{
	//fallBack Method
     return  "*****fall back testFallbackMethod" ;
} 
 


总结

每天一点进步,大家都成CTO!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值