Spring Cloud Feign 参数上下文设计

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Feign 参数上下文设计相关的知识,希望对你有一定的参考价值。

参考技术A 存在问题:
  微服务使用Feign远程调用,在异步线程执行情况下会丢失上下文参数,如token等
解决方案:
  使用线程变量存储上下文参数实体,在Feign拦截器进行赋值传递
1、设计参数上下文传递实体

2、使用Feign拦截器传递上下文参数

3、存在子线程情况线程变量

4、参数上下文值传递

5、使用场景

笔记:Spring Cloud Feign Ribbon 配置

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

全局配置

全局配置的方法非常简单,我们可以i直接使用 ribbon.<key>=<value>的方式来设置 ribbon 的各项默认参数,比如,修改默认的客户端调用超时时间示例如下,使用 yml 格式配置:

ribbon:

    ConnectionTimeout: 500

    ReadTimeout: 500

指定服务的配置

大多数情况下,我们对于服务调用的超时时间等可能会根据实际服务的特性做一些调整,所以仅仅依靠默认配置是不行的,在使用 Spring Cloud Feign 的时候,针对各个服务客户端进行个性化的配置方式与使用 Spring Cloud Ribbon 时的配置方式是一样的,都采用 <client>.ribbon.<key>=<value> 的格式设置,<client> 为使用 @FeignClient 注解的 name 属性或者 value属性指定的服务名,需要区分大小写,示例如下:

ORG.LIXUE.HELLOWORLD:

    ribbon:

            ConnectionTimeout: 50

            ReadTimeout: 50

常用Ribbon配置

配置名称

默认值

说明

ConnectionTimeout

  

连接超时时间

ReadTimeout

  

读取超时时间

OkToRetryOnAllOperatotions

  

对所有操作请求都进行重试

MaxAutoRetriesNextServer

  

切换服务器实例的重试次数,

MaxAutoRetries

  

对当前实例的重试次数

ServerListRefreshInterval

  

刷新服务列表源的间隔时间

 

以上是关于Spring Cloud Feign 参数上下文设计的主要内容,如果未能解决你的问题,请参考以下文章

将 Zuul、Hystrix(和 Feign)与 Spring Cloud HATEOAS 一起使用时如何转发标头?

参数为空时的Spring Cloud feign行为

Spring Cloud之Feign 转发请求头(header参数)

Spring Cloud Feign 如何使用对象参数

spring cloud feign 报错 feign.FeignException$MethodNotAllowed: status 405 reading

spring cloud feign 报错 feign.FeignException$MethodNotAllowed: status 405 reading