`
ahua186186
  • 浏览: 554743 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hystrix属性描述

 
阅读更多

super(Setter
                //设置GroupKey 用于dashboard 分组展示
                .withGroupKey(HystrixCommandGroupKey.Factory.asKey("Semaphore4UserLotteryLimitingGroup"))
                //设置commandKey 用户隔离线程池,不同的commandKey会使用不同的线程池
                .andCommandKey(HystrixCommandKey.Factory.asKey("Semaphore4UserLotteryLimitingKey"))
                //设置线程池名字的前缀,默认使用commandKey
                .andThreadPoolKey(HystrixThreadPoolKey.Factory.asKey("Semaphore4UserLotteryLimitingThreadPoolKey"))
                .andCommandPropertiesDefaults(
                        HystrixCommandProperties.Setter()
                                // 舱壁隔离策略:信号量隔离策略,通常不会用这个,除非是纯内存操作或者简单的并发控制
                                .withExecutionIsolationStrategy(HystrixCommandProperties.ExecutionIsolationStrategy.SEMAPHORE)
                                //设置每组command可以申请的permit最大数
                                //这个参数和线程池的核心线程数是同样的意义,允许有多少个请求同时请求资源。
                                .withExecutionIsolationSemaphoreMaxConcurrentRequests(0)
                                //fallback方法的信号量配置,配置getFallback方法并发请求的信号量,
                                // 如果请求超过了并发信号量限制,则不再尝试调用getFallback方法,而是快速失败,默认信号量为10
                                .withFallbackIsolationSemaphoreMaxConcurrentRequests(1)
                                //是否启用降级处理,如果启用了,则在超时或异常时调用getFallback进行降级处理,默认开启
                                .withFallbackEnabled(true)
                                //执行超时时间,默认为1000毫秒,如果命令是线程隔离,且配置了executionIsolationThreadInterruptOnTimeout=true,则执行线程将执行中断处理。
                                // 如果命令是信号量隔离,则进行终止操作,因为信号量隔离与主线程是在一个线程中执行,其不会中断线程处理
                                .withExecutionTimeoutInMilliseconds(2000)
                                //是否启用执行超时机制,默认为true
                                .withExecutionTimeoutEnabled(true)
                                //当隔离策略为THREAD时,当执行线程执行超时时,是否进行中断处理,默认为true
                                .withExecutionIsolationThreadInterruptOnTimeout(true)
                )
                //设置线程池相关参数,设置了信号量隔离后,线程池配置将变无效,因为信号量隔离策略是基于tomcat或者jetty容器线程做隔离
                .andThreadPoolPropertiesDefaults(
                        HystrixThreadPoolProperties.Setter()
                                // 配置线程池里的线程数
                                .withCoreSize(13)
                )
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics