远程调用——Feign

使用RestTemplate发起远程调用存在的问题
1.代码可读性差,编程体验不统一
2.参数复杂URL难以维护

Feign是一个声明式的http客户端,官方地址:https://github.com/OpenFeign/feign。其作用就是帮助我们优雅的实现http请求的发送,解决RestTemplate的问题。

使用步骤
1.引入依赖,在order-sevice中添加依赖

点击查看代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.添加注解 在order-service的启动类添加注解开启Feign的功能:@EnableFeignClients

3.编写feign客户端(客户端编写将会把feign接口单独抽取成一个模块)
a.首先创建一个module,命名为feign-api
b.在feign-api中然后引入feign的starter依赖

点击查看代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
c.在feign-api中创建一个包,将需要的实体类放入其中。
d.编写feign接口,其中FeignClient注解中的value属性值为需要调用的服务名称


e.在order-service的pom文件中中引入feign-api的依赖
4.测试

Feign的自定义配置

以配置日志级别为例
1.基于配置文件修改feign的日志级别

点击查看代码
feign:  
  client:
    config: 
      userservice: # 针对某个微服务的配置
        loggerLevel: FULL #  日志级别 
点击查看代码
feign:  
  client:
    config: 
      default: # 这里用default就是全局配置,如果是写服务名称,则是针对某个微服务的配置
        loggerLevel: FULL #  日志级别 
2.基于Java代码来修改日志级别 先声明一个类,然后声明一个Logger.Level的对象。

如果希望对全局生效:

如果希望对局部生效:

Feign使用的优化
Feign底层发起http请求,依赖于其它的框架。其底层客户端实现包括:
•URLConnection:默认实现,不支持连接池
•Apache HttpClient :支持连接池
•OKHttp:支持连接池
因此提高Feign的性能主要手段就是使用连接池代替默认的URLConnection。
使用步骤:
1.引入依赖,在order-service的pom文件中引入Apache的HttpClient依赖:

点击查看代码
<!--httpClient的依赖 -->
<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
</dependency>
2.配置连接池,在order-service的application.yml中添加配置:

总结
1.日志级别尽量用basic
2.使用HttpClient或OKHttp代替URLConnection
① 引入feign-httpClient依赖
② 配置文件开启httpClient功能,设置连接池参数

posted @ 2023-05-20 16:30  wzh_Official  阅读(60)  评论(0)    收藏  举报