主题
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