设置断点出现超时如何处理,运行过程中怎么设置断点

首页 > 车主 > 作者:YD1662023-10-25 17:19:07

所以,如果你使用了SpringCloud提供的方式来使用Feign,那么就可以通过声明OptionsBean和配置文件的方式更加方便地来设置超时时间

最终其实还是通过Feign.Builder来设置的

SpringCloud下通过Ribbon来设置

当Feign配合Ribbon使用时,除了上面两种方式之外,还可以通过Ribbon来设置超时时间。

但是这里我不知道你会不会好奇

Ribbon不是负载均衡组件,怎么可以设置超时时间?

其实这跟Ribbon的定位有关,除了负载均衡组件之外,Ribbon也干发送Http请求的事,也就是不配合Feign,他照样可以发送http请求。

来个简单demo

设置断点出现超时如何处理,运行过程中怎么设置断点(17)

解释一下上面的代码意思

这样,此时就会从两个服务实例中根据负载均衡选取一个服务地址发送http请求,

Ribbon既然可以发送Http请求,那么自然而然就可以设置超时时间

Feign在整合Ribbon的时候,为了统一配置,就默认将自己的超时时间交由Ribbon管理

所以,在默认情况下,Feign的超时时间可以由Ribbon配置

而Ribbon默认连接和读超时时间只有1s,所以在默认情况下,Feign的超时时间只有1s。

设置断点出现超时如何处理,运行过程中怎么设置断点(18)

IClientConfig是Ribbon的配置类,Ribbon所有的配置都可以从IClientConfig中获取。

所以,在默认情况下,很容易就发生超时,不过我们可以通过配置文件修改即可

ribbon: ConnectTimeout: 5000 ReadTimeout: 5000

你知道你发现没,上面说通过Ribbon设置Feign的超时时间,一直提到前面一直提到这个词

默认

什么情况下叫默认呢?

所谓的默认,就是当你不主动设置Feign的超时时间的时候,就是默认。

换句话说,一旦你通过上面说的那些配置方式设置Feign的超时时间,就不是默认了

此时通过Ribbon设置的超时时间就不会生效了

Feign是如何在默认情况下将超时时间交给Ribbon管理的?

要想回答这个问题,就得先搬出前面反复提到的Client接口了。

在SpringCloud的环境下,有一个Client的实现,叫LoadBalancerFeignClient

设置断点出现超时如何处理,运行过程中怎么设置断点(19)

通过名字就可以看出,带有负载均衡的Client实现,负载均衡的实现肯定是交给Ribbon来实现的

所以当Feign配合Ribbon时用的就是这个Client实现

既然实现了Client接口,那就看看execute方法的实现逻辑

设置断点出现超时如何处理,运行过程中怎么设置断点(20)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.