7K字解析!Feign的超时时间如何设置,我研究了4种情况

今天来聊一聊前段时间看到的一个面试题,也是在实际项目中需要考虑的一个问题,Feign的超时时间如何设置?

Feign的超时时间设置方式并不固定,它取决于Feign在项目中是如何使用的,不同的使用方式,超时时间设置方式也不大相同,甚至还可能有坑。

前置知识

由于文章会涉及到Feign的底层知识,如果不懂点Feign的基本概念的话,后面就看不下去了

所以为了方便不了解Feign的小伙伴也能够读得懂文章,这里我就简单地说说Feign的原理,点到为止,虽然不深入,但足够应付这篇文章了

Feign的作用

在项目中,我们经常需要调用第三方提供的Http接口,此时我们就可以使用一些Http框架来实现,比如HttpClient

 

java

复制代码

public class HttpClientDemo {     public static void main(String[] args) throws Exception {         //创建一个HttpClient         HttpClient httpClient = HttpClientBuilder.create().build();         //构建一个get请求         HttpGet httpGet = new HttpGet("http://192.168.100.1:8080/order/1");         //发送请求,获取响应         HttpResponse httpResponse = httpClient.execute(httpGet);         HttpEntity httpEntity = httpResponse.getEntity();         //读出响应值         String response = EntityUtils.toString(httpEntity);         System.out.println("Response: " + response);     } }

如果项目中只有一两个这种第三方接口这样写还行,但是一旦这种三方接口过多的话,每次都得这样组装参数,发送请求,写一堆同样的代码,就显然很麻烦了。

所以为了简化发送Http请求的开发,减少重复代码,Feign就出现了。

Feign是一个声明式的Http框架

当你需要调用Http接口时,你需要声明一个接口,加一些注解就可以了

而像组装参数、发送Http请求等重复性的工作都交给Feign来完成。

Feign的原理

虽然有了接口,但是仅仅有接口是不够的,因为接口又不能创建对象,我们得需要对象。

Feign为了方便我们为接口创建对象,提供的Feign.Builder这个内部类

这个类的作用就是解析接口的上的注解,为接口生成一个动态代理对象,后面通过这个代理对象就可以发送请求了。

这个内部类有很多属性,这些属性都是Feign的核心组件。

在这些核心的组件中有一个叫Client的,上图中我圈出来了。

这个Client类划个重点,非常非常重要,本文讨论的东西跟他有密切关系。

它只有一个方法Response execute(Request request, Options options)

方法的第一个参数Request就是封装了http请求的url、请求方法,请求头、请求体之类的参数

第二个参数Options就是本文的主题,封装了超时时间。

返回值Response就是封装了一些响应码status、响应头之类的

所以通过方法的参数和返回值也可以猜出来,这个Client作用是用来组装Http请求参数,发送Http请求的

并且http请求超时时间是根据传给ClientOptions参数来决定的

如果想更深一步了解Feign原理,可在公众号三友的java日记菜单栏springcloud分类中查看

Feign单独使用时超时时间设置

Feign本身就是

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值