Spring Cloud (四) - Fegin及源码介绍

Feign

概述:

是一种跨服务调用的技术,实现两个服务之间的通讯,只能在cloud架构中使用,Feign的使用依赖于Eureka,只有两个服务都注册到了Eureka才能够实现两个服务之间的通讯。

使用

它的使用在上一篇已经说明
SpringCloud(三)-Eureka

需要注意的地方:

  1. 在被调用方的接口时要写全路径并且方法参数名称等都必须一致
  2. 使用@RequestBody传对象的时候,应该使用@PostMapping
  3. 有多个参数时,通过@RequestParam调用

源码说明:

我们看一下LoadBalancerFeignClient类,它实现的是Client接口,
在这里插入图片描述
其中最核心的方法是excute(),注释意思:会接受一个请求并返回一个响应,它有两个参数,request和options,我们先看一下request
在这里插入图片描述
可以看到request对象中,里面有请求的方法,url,请求头,请求体等这些是请求的信息,然后我们看一下Options:
在这里插入图片描述
在这里我们可以看到是配置feign的连接时间和读取时间,默认的是10s和60s,虽然设置的是,但是我们在使用中请求超过1s就报错,这是因为它经过了Hystrix进行了包装,Hystrix请求第三方服务请求超过1s就会报错

然后我们回到LoadBalancerFeignClient类中:

在这里插入图片描述
你会看到它使用到了Ribbon,所以Feign使用的是Ribbon进行负载均衡的
在这里插入图片描述
红色标注的方法就是根据请求拿到响应

超时机制

上边也提到Feign超时时间,在这里我们来修改一下它的超时时间
官方文档:
在这里插入图片描述
他有两种方式进行配置,第一个可以对指定某一个服务进行配置,在这里我们使用第二种方式就可以

总结:

  1. ribbon和Feign中选择Feign是因为它集成了ribbon,写起来更加清晰,并且采用的是注解的方式,配置熔断等很是方便
  2. Feign默认的读取超时时间是60s,但是由于Hystrix所以默认是1s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值