feign 功能扩展,满足spring cloud RPC 调用需求, giants-feign 依赖于 spring-cloud-starter-openfeign 的自动配置基本功能。
增加版本号功能,对不同环境进行隔离,同时也便于本地调试,本地local环境只需要启动需要调试的服务,同时不影响公用测试环境调用链。 通过 giants.feign.client-version-map 指定feign client 对应该版本号
错误解码器,当调用Feign接口出现错误时调用解码器 进行解码,解码器列表如下:
- com.giants.feign.codec.FeignExceptionDecoder : 根据返回http状态码进行异常解码,默认异常状态码为600,配合 com.giants.web.springmvc.resolver .JsonExceptionResolver 使用。
GET请示参数编码器,编码器列表如下:
- com.giants.feign.querymap.BeanQueryMapNestEncoder : 嵌套复杂属性编码器,支持复杂对象通过GET请求参数转递。
调用处理器,Feign代理实例调用接口时执行 调用处理器,调用处理器列表如下:
- com.giants.feign.proxy.GiantsInvocationHandler : 记录Feign接口执行时间,配合 com.giants.analyse.profiler.ExecutionTimeProfiler 打印调用方法堆栈时间统计使用。
引入maven 依赖,项目会自动加载 giants-feign 相关配置类,maven依赖配置如下:
<dependency>
<groupId>com.github.vencent-lu</groupId>
<artifactId>giants-feign</artifactId>
<version>1.1.0</version>
</dependency>
支持 yaml 与 properties 两种配置方式,以yml举例,配置说明如下:
giants:
feign:
# FeignExceptionDecoder 反序列化异常对应状态码 默认值 600
response-exception-status: 600
# 指定feign client 对应该版本号,Map类型 key:Feign服务名,value:版本号
client-version-map:
giants-auth-server: 1.0.0