
# 接入指南
1. pom文件添加依赖。
   ```
   <dependency>
       <groupId>com.huaweicloud.devspore</groupId>
       <artifactId>devspore-clientcontrol</artifactId>
       <version>${devspore-clientcontrol.version}</version> #版本号，版本号可参考AstroPro-SDK版本变更与下载。
   </dependency>
   ```
   
2. 配置文件示例。
   ```
   devspore:
     client-control:
       biz-pool: #（线程池配置，当使用超时功能时需要配置此参数，多个超时规则共用一个线程池）
         prioritized: false # 线程池队列是否采用优先队列，当消息有优先级时需要设置: true: 优先队列 false：非优先队列
         core-pool-size: 20 # 线程池核心线程数
         maximum-pool-size: 32 # 线程池所能容纳的最大线程数
         keep-alive-time-ms: 60000 # 线程池任务队列大小
         work-queue-size: 5000 # 非核心线程闲置时的超时时长
         rejectedExecutionHandlerClassName: java.util.concurrent.ThreadPoolExecutor$AbortPolicy # 线程池的拒绝策略（类的全路径限定名）
       caches:
         demo-caches: # 自定义的缓存策略，可定义多个
         ttl: 60000 # 缓存时长，默认6小时
         performance-ttl: 30000 # 性能缓存时长，默认10分钟
         type: caffeine # 缓存类型，可选值：redis/caffeine
         redis-connection-factory-bean-name: redisConnectionFactory # 缓存类型为redis时可通过配置该选项指定RedisConnectionFactory的bean名称来选择所用数据源 (type为redis时使用)
         maximum-size: 60000 # caffeine缓存最大数量，默认60000 （type为caffeine时使用）
         cache-consecutive-exception-times: 3 # 缓存连续异常次数，默认3次 (达到指定次数后关闭缓存的功能)
         cache-interruption-duration: 60 # 缓存功能关闭时长，单位s，默认60 (达到指定时间后恢复缓存的功能)
       rules:
         demo-rules: # 自定义的流控规则，可定义多个
           time-limit:
             enable: false # 超时功能开关, 默认开启
             timeout-duration: 1000 # 限时时长 默认1000ms
     cancel-running-future: true # 超时是否结束当前任务 默认true
           retry:
             enable: false # 重试开关，默认开启
     enable-log: true  # 重试日志开关，默认开启
     log-correlation-property: demo # 可取出header或attributes中相应字段值打印到重试日志中(无需要可配置为空字符串 "")
     max-attempts: 3 # 最大重试次数，默认3
     wait-duration-ms: 500 # 重试间隔，默认500（ms）
     policy: Randomized # 可选值Exponential/Randomized（重试策略，Exponential指数级/Randomized固定间隔（默认Randomized））
     randomized-wait-factor: 0.5 # 随机策略随机因子，默认0.5
     exponential-backoff-multiplier: 2 # 指数退避算法的乘数，默认2.0
     ignore-exceptions: # 不触发重试的异常，此项配置在超时启用时失效
       - java.awt.AWTException
       - javax.security.auth.login.AccountExpiredException
     retry-exceptions: # 不触发重试的异常，此项配置在超时启用时失效
       - java.awt.AWTException
       - javax.security.auth.login.AccountExpiredException  
           fallback:
             enable: true # 熔断开关, 默认开启
     enable-log：true # 熔断状态切换日志开关
             slow-call-duration-threshold: 1 # 计入慢调用的时间，单位 s
             slow-call-rate-threshold: 20 # 慢调用百分比(100为关闭慢调用熔断功能)（慢调用计算窗口和失败的窗口是独立计算的两个窗口）
             failure-rate-threshold: 50 # 滑动窗口内失败百分比，默认50
             sliding-window-type: COUNT_BASED # 滑动窗口类型（COUNT_BASED次数/TIME_BASED时间）
             sliding-window-size: 5 # 滑动窗口大小（次/秒）
             minimum-number-of-calls: 5 # 滑动窗口内最小请求数（滑动窗口内满足最小请求数才会触发熔断）
             wait-duration-in-open-state: 10000 # 进入半开所需时间（断路器打开以后进入半开状态等待时间）
             permitted-number-of-calls-in-half-open-state: 5 #半开状态允许通过的请求数量，默认10个请求（失败比例达到设置的百分比，断路器继续打开，再次等待进入半开）注：不大于滑动窗口内最小请求数，相对较小的配置优先起作用，所以如果大于滑动窗口最小请求，起作用的就是滑动窗口最小请求数了
     ignore-exceptions: # 不触发熔断的异常，此项配置在超时启用时失效
       - java.awt.AWTException
       - javax.security.auth.login.AccountExpiredException
     retry-exceptions: # 指定触发熔断的异常，此项配置在超时启用时失效
       - java.awt.AWTException
       - javax.security.auth.login.AccountExpiredException
   ```
   
3. 代码中添加@Clientcontrol注解。
   ```
   @ClientControl(rule = "demo-rules")
   public String testTimelimit(long sleepTime) {
     return "test";
   }
   ```
   
 
