1、OpenFeign介绍
Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。
当然在使用OpenFeign前,你得先将服务进行注册,可以选择注册到Nacos,注册流程如果不懂,可以参考
Nacos服务注册,当然我相信你应该是懂的,因为学微服务一般都是先学习服务注册。
2、使用步骤
注意接下来操作,均在服务调用者模块
步骤一:在服务调用者中引入OpenFeign的依赖
<!--openFeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
当然推荐直接在总模块直接引入,这样就不用在各个模块独立引入,OpenFeign还是应用挺频繁的。
步骤二:在服务调用者的启动类加入注解:@EnableFeignClients
步骤三:定义一个新的接口,编写Feign客户端
@FeignClient("my-order") //my-order是服务提供者的注册在nacos的服务模块名
public interface OrderService {
@GetMapping("/order") //这个路径是my-order里面的应该uri路径
List<String> getOrderId(); // 方法名可以随便写,但是返回值一定要对应
}
服务提供者查询对应的接口如下:
步骤四:注入使用
3、连接池
Feign请求别的服务,底层发起http请求,依赖于其它的框架。其底层支持的http客户端实现包括:
-
HttpURLConnection:默认实现,不支持连接池。
-
Apache HttpClient :支持连接池
-
OKHttp:支持连接池
因此我们可以更改底层实现,这样性能会变高点。
实现步骤如下:
步骤一 :引入依赖
<!--OK http 的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
</dependency>
步骤二:在yml中开启连接池。
feign:
okhttp:
enabled: true # 开启OKHttp功能