Feign
Feign远程调用
- 导包 springboot-cloud-starter-openfeign
- 启动类加注解 @EnableFeignClients
- 写 feign 接口并注入spring。 feign接口的方法 与 被调用服务的 controller的方法一致(访问方式、访问路径、返回值类型、接收参数)
点击查看代码
@feign("要调用的服务名")
public interface userFeign(){
@GetMapping("/user/{id}")
User queryById(@PathVariable("id") Long id);
}
Feign优化使用
引依赖: feign-httpclient
- 日志级别尽量用 BASIC
- 使用HttpClient或OKHttp替代默认的URLConnection
2.1. 引依赖 feign-httpclient
2.2. 写配置
点击查看代码
httpclient:
enable: ture #开启feign对HttpClient的支持
max-connections: 200 # 最大的连接数
max-connections-per-route: 50 # 每个路径的最大连接数
配置日志级别
- 写配置
点击查看代码
public interface FeignLogLeverConfiguration{
@Bean
// Logger 是 feign 包下的,别导错了
public Logger.Lever feignLogLever(){
return Logger.Lever.BASIC;
}
}
feign最佳使用方式
所谓最佳使用方式,就是使用该技术的过程中,体验最好的一种使用方式
直接把 feign的client单独抽取出来作为独立的模块,并把接口有关的pojo、feign的配置都放到这个模块中,可提供给所有消费者使用。
例如,将UserClient、User、Feign的默认配置都抽取到一个feign-api包中,所有微服务引用该依赖包,即可直接使用。
注意:单独把feign抽取为独立模块后, 消费方的 @EnableFeignClients 与 要扫描的 feignClient不在 同一个包或者其子包下,所以无法扫描使用 要调用的 feignClient
此时,应在启动类注解 @EnableFeignClients 加属性 basePackages即可。 例:@EnableFeignClients(basePackages = "com.wyz.feign.clients")