Http客户端Feign-远程调用
Posted MyAzhe0ci3
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Http客户端Feign-远程调用相关的知识,希望对你有一定的参考价值。
Feign的使用步骤
- 引入依赖
- 添加@EnableFeignClients注解
- 编写FeignClient接口
- 使用FeignClient中定义的方法代替RestTemplate
Feign的日志配置
1.方式一是配置文件,feign.client.config.xxx.loggerLevel
- 如果xxx是default则代表全局
- 如果xxx是服务名称,例如userservice则代表某服务
2.方式二是java代码配置Logger.Level这个Bean
- 如果在@EnableFeignClients注解声明则代表全局
- 如果在@FeignClient注解中声明则代表某服务
Feign的性能优化
Feign底层的客户端实现
- URLConnection:默认实现,不支持连接池
- Apache HttpClient:支持连接池
- OKHttp:支持连接池
因此优化Feign的性能主要包括:
- 使用连接池代替默认的URLConnection
- 日志级别,最好
使用basic或none
Feign的最佳实现
两种最佳的实现方案
- controllor和FeginClient继承同一接口
- 将feignClient,POJO,Feign的默认配置都定义到一个项目中,供所有消费者使用
抽取FeignClient
实现最佳实践的步骤如下:
- 首先创建一个moudle,命名为feign-api,然后引入feign的starter依赖
- 将order-service中编写的UserClient,User,DefaultFeignConfiguration都复制到feign-api项目中
- 在order-service中引入feign-api的依赖
- 修改order-service中的所有与上述三个组件有关的import部分,改成导入feign-api中的包
- 重启测试
当定义的FeignClient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用。有两种方式解决:
方式一:指定FeignClient所在包
@EnableFeignClients(basePackges=“cn.itcast.feign.clients”)
方式二:指定FeignClient字节码
@EnableFeignClients(clients=UserClient.class)
以上是关于Http客户端Feign-远程调用的主要内容,如果未能解决你的问题,请参考以下文章