ReyClient注解详解
ReyClient是x7-reyc框架的注解,通过@ReyClient表示要发起http请求。 x7-reyc封装了httpClient和resilience4j, 注解里可以配置:
value: dns或IP (适合k8s环境下使用)
circuitBreaker: 熔断, ""表示通用配置,"foo", 表示名为foo的专用配置
retry: true表示启用重试,不配置默认为false
fallback: 配置降级类名, 如果配置了, 触发了降级,会去找方法名一样的降级方法,找不到则不执行降级处理
特别用法,在方法里增加参数 io.xream.x7.reyc.Url 可以优先替换掉注解里配置的url
代码示例:
@ReyClient(value = "127.0.0.1:8868", circuitBreaker = "", retry = true, fallback = TestFallback.class)
public interface TestServiceRemote {
@RequestMapping(value = "/xxx/reyc/test") //默认POST请求
Boolean test(CatRO ro, Url url); //参数Url可以优先替换掉注解里配置的url
@RequestMapping(value = "/xxx/time/test", method = RequestMethod.GET)
Boolean testTimeJack();
}
在启动列里要加上注解@EnableReyClient
配置文件如下:
http.connectTimeout=15000
http.socketTimeout=60000
resilience4j.circuitbreaker.configs.default.wait-duration-in-open-state=60000
resilience4j.circuitbreaker.configs.default.ring-buffer-size-in-closed-state=100
resilience4j.circuitbreaker.configs.default.ring-buffer-size-in-half-open-state=10
resilience4j.circuitbreaker.configs.default.failure-rate-threshold=50
resilience4j.circuitbreaker.configs.default.event-consumer-buffer-size=100
resilience4j.ratelimiter.instances.boo.base-config=default
resilience4j.ratelimiter.configs.default.limit-for-period=10
resilience4j.ratelimiter.configs.default.limit-refresh-period=1s
resilience4j.ratelimiter.configs.default.timeout-duration=5000
resilience4j.ratelimiter.configs.default.eventConsumerBufferSize=100
更详细的代码示例, 请参照xream.io官网