SpringCloud——OpenFeign(简介、快速入门、手写Feign)

简介

Feign 是声明性(注解)Web 服务客户端。它使编写 Web 服务客户端更加容易。要使用 Feign, 请创建一个接口并对其进行注解。Spring Cloud 集成 了 Ribbon 和 Eureka 以及 Spring Cloud LoadBalancer,以在使用 Feign 时提供负载平衡 的 http 客户端
Feign 是一个远程调用的组件 (接口,注解) http 调用的
Feign 集成了 ribbon ribbon 里面集成了 eureka

快速入门

结构

在这里插入图片描述

1.创建OrderService

导入Web、DiscoveryClient、Lombok依赖
修改版本号,重命名启动类(详细见Eureka客户端创建篇)
修改yml文件

server:
  port: 8080
spring:
  application:
    name: order-service
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

2.创建User-Server

同上
依赖:

在这里插入图片描述

要使用Feign进行远程调用,要先在启动类上加注解@EnableFeignClients
在这里插入图片描述
之后需要创建一个接口,并对其进行注解@FeignClient(value = “order-service”),接着将需要调用的服务方法签名粘贴到接口中

/*
* @FeignClient(value = "order-service")
* value是提供者的应用名称
* */
@FeignClient(value = "order-service")
public interface UserOrderFeign {
    @GetMapping("doOrder")
    String doOrder();
}

在这里插入图片描述
在user-service的controller中将接口注入,使用方法调用
在这里插入图片描述

测试:
在这里插入图片描述

总结:

浏览器(前端)——》user-service(/userDoOrder)——》rpc(feign)——》order-service(/doOrder)

OpenFeign等待时间

默认OpenFeign调用其他服务,只会等待1s,超时则会报错,若想延长时间,可以在消费者端yml中进行配置

  • 因为feign只是封装了远程调用功能,底层还是ribbon,所以可以对ribbon进行配置
    ribbon不会进行提示,可以双shift查找DefaultClientConfigImpl
    在这里插入图片描述
    在注释中可以找到
    在这里插入图片描述

进行配置:

ribbon:
  ReadTimeOut: 3000 # 给3s服务调用超时时间
  ConnectTimeout: 3000 # 连接服务超时时间

手写OpenFeign的过程

接口是被jdk动态代理,进行Debug会发现是一个$Proxy对象
jdk动态代理,只要是代理对象调用的方法必须走 invoke
在调用方法处打断点,浏览器进行访问,按住Alt键,鼠标点击实例对象在这里插入图片描述
简单说就是使用动态代理的invoke方法,拿到GetMapping注解里面的值,再拿FeignClient注解里面的值,将他们拼成ribbon所需的url模式,交给ribbon去处理
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值