Skip to content

openfeign组件

通用功能包含基于底座的微服务所需的通用功能。

组件依赖如下:

xml
<dependency>
    <groupId>cn.zjtele.pubinfo.cloud</groupId>
    <artifactId>pubinfo-cloud-starter-openfeign</artifactId>
</dependency>

feign全局配置

底座默认会加载所有cn.zjtele.**.client包路径下的client,并指定默认的全局配置参数。

java
@EnableFeignClients(basePackages = {"cn.zjtele.**.client"}, defaultConfiguration = FeignGlobalConfig.class)
@Configuration
@EnableConfigurationProperties({PubInfoFeignProperties.class})
public class FeignGlobalConfig {
    ....
}

全局超时配置参数如下:

yaml
pubinfo:
  cloud:
    feign:
      connectTimeout: 3000
      readTimeout: 10000

用户登录态传递

微服务之前的feign调用,会通过cn.zjtele.pubinfo.cloud.openfeign.interceptor.FeignRequestInterceptor,将当前登录用户信息传递给下游微服务。下游微服务通过通用功能中的用户登录态解析,解析出当前登录用户信息。

okhttp配置

openfeign默认时通过URLConnection作为底层的请求实现,不支持连接池。底座将底层的请求实现改为了okhttp,并增加了连接池配置。 具体的配置如下:

yaml
feign:
  okhttp:
    enabled: true
okhttp:
  connectTimeout: 5000
  readTimeout: 5000
  writeTimeout: 5000
  maxIdleConnections: 200
  keepAliveDuration: 5000

动态feignclient定义

底座中,认证服务和系统管理服务的服务名是由使用者自定义的,所以这两个服务的feignclient需要通过动态配置的方式进行定义。

例如,网关中,需要指定认证服务的服务名,然后初始化对应的client进行调用。

yaml
pubinfo:
  client:
    auth-service-name: demo-auth

业务微服务指定系统管理微服务,

yaml
pubinfo:
  client:
    rbac-service-name: demo-sys