SpringCloud openfeign声明式服务调用实现方法介绍

目录
  • 一、介绍
  • 二、使用
  • 三、通讯优化

一、介绍

OpenFeign是一种声明式、模板化的HTTP客户端(仅在Application Client中使用)(称OpenFeign作用:声明式服务调用)。声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求。OpenFeign替换RestTemplate。

二、使用

(1)导入依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.3.12.RELEASE</version>
</parent>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Hoxton.SR12</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

(2)在启动类上添加扫描注解

/**
 * EnableFeignClients - 开启Openfeign技术。让spring cloud扫描Openfeign相关注解,
 * 生成动态代理实现对象。
 *  可选属性 basePackages = {"feign接口所在包1", "feign接口所在包2"}
 *  默认扫描当前类型所在包,及所有子孙包。
 */
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients(basePackages = {"com.bjsxt.feign"})
public class OpenFeignAppClientApp {
    public static void main(String[] args) {
        SpringApplication.run(OpenFeignAppClientApp.class, args);
    }
}

(3)编写本地接口

/**
 * 定义接口,基于注解,实现声明式远程服务调用。
 * 技术是OpenFeign。
 * 需要确定的事情:
 *  1. 访问的远程服务名称是什么。
 *  2. 访问的远程服务具体地址是什么。
 *  3. 访问的远程服务请求方式是什么。
 *  4. 访问的远程服务,参数是什么。
 *  5. 访问的远程服务,返回结果类型是什么。
 *
 * FeignClient - 代表当前的接口是一个OpenFeign客户端,要访问远程的服务。
 *  具体的实现类对象,由spring cloud动态生成代理对象来实现。
 *  必要属性: value - 要访问的远程服务命名是什么。
 */
@FeignClient("application-service")
public interface AppServiceOpenfeignClient {
    /**
     * 定义方法。使用SpringMVC注解+方法定义,实现远程服务访问规则定义。
     * 建议写法: 找到要访问的控制器。复制对应的方法签名即可。
     *
     * GetMapping - 约束了请求方式
     *  注解属性value - 约束了请求的具体地址
     * 方法返回值 - 约束了远程服务返回结果类型
     * 方法参数表 - 约束了远程服务的请求参数
     */
    @GetMapping("/getNoParams")
    public String getNoParams();
    /**
     * post请求,无参数
     * @return
     */
    @PostMapping("/postNoParams")
    public String postNoParams();
}

(4)本地接口注意事项

形参需要添加对应注解如@RequestParam,@RequestBody,@PathVariable等。

三、通讯优化

(1)配置OpenFeign请求-应答的GZIP压缩

# 配置openfeign请求和应答的gzip压缩处理
feign:
  compression:
    request:
      enabled: true  # 开启请求压缩处理。默认false
      min-request-size: 128  # 请求容量多少,开始压缩。默认2048字节
      mime-types: text/html, text/xml, text/plain, text/css, application/json # 请求头content type是什么,做压缩处理
    response:
      enabled: true # 开启响应压缩处理。默认false

(2)Tomcat服务器GZIP优化配置

server:
  compression:
    enabled: true  # 是否开启响应压缩处理。默认false
    mime-types: text/html, text/xml, text/plain, text/css, text/javascript, application/javascript, application/json, application/xml # 响应content type什么类型,做压缩处理。
    min-response-size: 128  # 响应容量多大,做压缩处理。 默认2048字节

到此这篇关于SpringCloud openfeign声明式服务调用实现方法介绍的文章就介绍到这了,更多相关SpringCloud openfeign内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud实战之Feign声明式服务调用

    在前面的文章中可以发现当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下,并且显得好傻. 那么有没有更好的解决方案呢?答案是确定的有,Netflix已经为我们提供了一个框架:Feign. Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单.Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义

  • SpringCloud OpenFeign与Ribbon客户端配置详解

    目录 一.前言 二.OpenFeign与Ribbon配置 1.OpenFeign默认处理请求超时时间 1.1.模拟处理请求0.5秒 1.2.模拟处理请求1秒 2.Ribbon配置 2.1.配置请求处理超时5秒 2.2.模拟请求处理5秒 3.OpenFeign配置 3.1.配置请求处理超时6秒 3.2.OpenFeign配置对全部服务有效 3.3.针对某个服务 一.前言 OpenFeign为微服务架构下服务之间的调用提供了解决方案,OpenFeign是一种声明式.模板化的HTTP客户端.在Spri

  • SpringCloud之Feign代理,声明式服务调用方式

    目录 引入相关依赖然后再主入口启用注解 引入相关依赖然后再主入口启用注解:@Enabl Feign配合Ribbon.Hystrix的超时策略配置如下 1.pom 2.主入口 3.配置文件 4.业务代码与实现 5.controller测试 将其他微服务中的服务接口,用feign在本项目中进行调用. Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端.它使得编写Web服务客户端变得更加简单.我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口

  • SpringCloud超详细讲解Feign声明式服务调用

    目录 入门案例 @FeignClient注解详解 Feign Client的配置 Feign请求添加headers 负载均衡 (Ribbon) 容错机制 Hystrix支持 Sentinel支持 Feign开启容错机制支持后的使用方式 请求压缩feign.compression 日志级别 入门案例 在服务消费者导入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>

  • SpringCloud Feign客户端使用流程

    目录 一.HTTP客户端Feign 1.1RestTemplate方式调用存在的问题 1.2Feign的介绍 1.3Feign的使用 1.4自定义Feign的配置 1.5Feign性能优化 1.6Feign的最佳实践 一.HTTP客户端Feign 1.1RestTemplate方式调用存在的问题 以前我用使用RestTemplate发起远程调用的代码: String url = "http://userservice/user/" + order.getUserId(); User u

  • SpringCloud 2020-Ribbon负载均衡服务调用的实现

    1.概述 官网:https://github.com/Netflix/ribbon/wiki/Getting-Started Ribbon目前也进入维护模式,未来替换方案: LB(负载均衡) 集中式LB 进程内LB Ribbon就是负载均衡+RestTemplate调用 2.Ribbon负载均衡演示 1.架构说明 总结:Ribbon其实就是一个软负载均衡的客户端组件,他可以和其他所需请求的客户端结合使用,和eureka结合只是其中的一个实例. 2. 3.二说RestTemplate的使用 官网

  • SpringCloud使用Feign实现远程调用流程详细介绍

    目录 前言 1. 导入依赖坐标 2. 开启Feign自动装配 3. 声明远程调用 4. 替代RestTemplate 5. 测试 前言 本次示例代码的文件结构如下图所示. 1. 导入依赖坐标 在 order-service 的 pom.xml 文件中导入 Feign 的依赖坐标. <!-- Feign远程调用客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifa

  • SpringCloud使用Feign实现服务调用

    Spring Cloud Feign简介 Spring Cloud Feign也是一个基础工具类,它整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能以外,它还提供了一种声明式的Web服务客户端定义方式.使用它可以进行服务的消费,但是它的客户端负载平衡仍是通过Ribbon实现的 使用Spring Cloud Feign 创建一个SpringBoot工程,作为服务调用方 1.pom.xml <dependency> <group

  • 从零开始学springboot整合feign跨服务调用的方法

    介绍 微服务横行的互联网世界, 跨服务调用显得很平凡, 我们除了采用传统的http方式接口调用, 有没有更为优雅方便的方法呢? 答案是肯定的,feign就提供了轻便的方式! 如果你的服务都注册了注册中心,比如nacos, 那么调用会显得很轻松, 只需一个注解, 带上需要调用的服务名即可,**feign + nacos**会帮你做剩余的事. 如果没有注册中心, 也无需担心, feign一样可以以传统的 ip:port 方式进行调用~ 下面,我们来实践下吧 springboot整合feign 引入依

  • c#调用c++方法介绍,window api

    例子1如下: 复制代码 代码如下: //声明部分 [DllImport("um_web_client.dll")]  private static extern int CheckUserName(string UserName); // public static int AuthUserName(string username)  {   if(!IsConnection())   {    StartWebClient(UDBClientIP,UDBClientPort,UDBC

  • Spring boot2X Consul如何使用Feign实现服务调用

    这篇文章主要介绍了spring boot2X Consul如何使用Feign实现服务调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 服务调用有两种方式: A.使用RestTemplate 进行服务调用 B.使用Feign 进行声明式服务调用 上一次写了使用RestTemplate的方式,这次使用Feign的方式实现 服务注册发现中心使用Consul 启动Consul consul agent -dev spring boot 版本 2.2.

  • Spring boot2X Consul如何通过RestTemplate实现服务调用

    这篇文章主要介绍了spring boot2X Consul如何通过RestTemplate实现服务调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Consul可以用于实现分布式系统的服务发现与配置 服务调用有两种方式: A.使用RestTemplate 进行服务调用 负载均衡--通过Ribbon注解RestTemplate B.使用Feign 进行声明式服务调用 负载均衡--默认使用Ribbon实现 先使用RestTemplate来实现 1

随机推荐