OpenFeign如何使用

本文主要介绍"OpenFeign怎么使用",希望能够解决您遇到有关问题,下面我们一起来看这篇 "OpenFeign怎么使用" 文章。

OpenFeign基本使用

OpenFeign简介

OpenFeign是一个声明式的http客户端,让编写web服务客户端变的非常容易,只需要创建一个接口并在接口上添加注解即可,OpenFeign的前身是Feign,后者目前已经停更了,OpenFeign是SpringCloud在Feign的基础上支持了Spring MVC的注解,并通过动态代理的方式产生实现类来做负载均衡并进行调用其他服务。

Ribbon+RestTemplate过于繁琐,通过OpenFeign可以简化开发

基本使用

以用户服务调用商品为例

用户服务配置 OpenFeign

  1. 导入依赖

    <dependency>
    			<groupId>org.springframework.cloud</groupId>
    			<artifactId>spring-cloud-starter-openfeign</artifactId>
    		</dependency>


  2. 启动类上加注解

    OpenFeign如何使用

在商品服务中写被调用接口(无参接口测试)

OpenFeign如何使用

在用户服务中 直接使用Feign写服务调用

  1. 创建一个普通的Java接口

    OpenFeign如何使用

  2. 通过注解声明当前接口为 Feign的客户端

    OpenFeign如何使用

  3. 在Feign接口中 写服务调用的方法

    OpenFeign如何使用

  4. 在用户服务的Controller中使用Feign接口

    OpenFeign如何使用

  5. 启动所有服务 两个商品服务 一个用户服务 注册中心 访问用户服务观察服务调用

    访问用户服务的Controller 可以看到负载均衡的效果

    OpenFeign如何使用

    OpenFeign如何使用

  6. 流程

    OpenFeign如何使用

关于传递参数的处理

参数传递都是json 实际上是RestFul的请求

  1. /{} 拼接参数

    1. 被调用接口示例【商品服务】

      OpenFeign如何使用

    2. Feign接口示例【用户服务】

      OpenFeign如何使用

  2. ?拼接参数 对应常见请求类型Get请求

    1. 被调用接口示例【商品服务】

      OpenFeign如何使用

    2. Feign接口示例【用户服务】

      OpenFeign如何使用

  3. 请求体传递参数 对应常见请求Post请求

    1. 被调用接口示例【商品服务】

      OpenFeign如何使用

    2. Feign接口示例【用户服务】

      OpenFeign如何使用

开启日志

Feign 和 RestTemplate 不一样 ,对请求细节封装的更加彻底,不管是请求还是请求的参数,还是响应的状态都看不到,想要看到请求的细节需要通过Feign的日志

Feign日志的配置

1.配置类 @Bean

OpenFeign如何使用

[@Bean](https://my.oschina.net/bean)
public Logger.Level feignConfig(){
    return Logger.Level.FULL;
}

2.在配置文件中开启Feign接口所在包的日志

OpenFeign如何使用

通过以上配置 重启项目 再次使用Feign服务调用 就会看到如下日志:

OpenFeign如何使用

OpenFeign如何使用

Feign参数调优

1. 替换OKHttp

在默认情况下 spring cloud feign在进行各个子服务之间的调用时,http组件使用的是jdk的HttpURLConnection,没有使用线程池。

有2种可选的线程池:HttpClient和OKHttp,比较推荐OKHttp,请求封装的非常简单易用,性能也很ok。

添加依赖

<dependency>
    <groupId>com.squareup.okhttp3</groupId>
    <artifactId>okhttp</artifactId>
</dependency>

修改配置文件

feign:
  okhttp:
    enabled: true
  httpclient:
    enabled: false
    max-connections: 1000
    max-connections-per-route: 100

max-connections:最大连接数

max-connections-per-route:每个url的连接数

2. 开启Feign请求响应压缩

开启压缩可以有效节约网络资源,但是会增加CPU压力,建议把最小压缩的文档大小适度调大一点

## 开启Feign请求响应压缩
feign.compression.request.enabled=true

feign.compression.response.enabled=true
## 配置压缩文档类型及最小压缩的文档大小
feign.compression.request.mime-types=text/xml,application/xml,application/json

feign.compression.request.min-request-size=2048

关于 "OpenFeign怎么使用" 就介绍到这。希望大家多多支持编程宝库

以太坊Downloader模块下StateSync.go源码分析是怎样的:本文主要介绍"以太坊Downloader模块下StateSync.go源码分析是如何的",希望能够解决您遇到有关问题,下面我们一起来看这篇 "以太坊Downloade ...