Spring Cloud Feign

Ribbon 配置

Spring Cloud Feign 的客户端负载均衡是通过 Spring Cloud Ribbon 实现的,所以可以直接通过配置Ribbon客户端的方式来自定义各个服务客户端调用的参数。

全局

1
2
ribbon.ConnectTimeout=500
ribbon.ReadTimeout=5000

单位毫秒

指定服务配置

1
<client>.ribbon.key = value

== @FeignClient 中的服务名称

Ribbon 重试机制

1
SERVICE.ribbon.MaxAutoRetries=1

重试策略先尝试访问首选实例一次,失败后才更换实例方法,更换实例访问的次数通过 ribbon.MaxAutoRetriesNextServer 参数设置。
MaxAutoRetries 单个实例的最大尝试次数,MaxAutoRetriesNextServer更换实例尝试的最大次数

TIP

Ribbon的超时与Hystrix的是超时是两个概念,Hystrix 的是超时时间需要大于Ribbon的超时时间,否则Hystrix命令超时后,该命令直接熔断,重试机制也就没有意义。

Hystrix 配置

Hystrix 实现服务降级

全局配置

1
hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds = 5000

单位毫秒

1
2
feign.hystrix.enabled = false
hystrix.command.defauld.exectuion.timeout.enabled=false

关闭Feign 客户端的 Hystrix 功能

指定命令配置
采用 hystrix.command.<commandKey> 作为前缀

其他配置

请求压缩

1
2
3
4
5
6
7
8
# 开启对请求与相应的GZIP压缩,减少通行过程中的性能损耗
feign.compression.request.enabled=true
feign.compression.response.enaled=true

# 配置内容指定了压缩的请求数据类型,设置请求压缩的大小下限,只有超过这个大小的请求才会对其进行压缩
feign.compression.request.enabled=true
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048

日志配置