Ribbon超时设置

Ribbon超时设置,第1张

一、简单说一下目前的系统

1.注册中心shop-eureka

2.网关shop-gateway

3.业务系统shop-business

4.用户服务shop-user-center

二、问题,现在我是在shop-bussiness系统中使用feign调用shop-user-center的接口

1.shop-user-center

2.shop-business中的feign接口:

3.shop-business中的feign接口使用

可以看出在图一中我设置sleep时间为7秒,最开始我自己不设置超时时间,在图上调用的时候肯定是报超时错误:java.util.concurrent.TimeoutException: null。

三、设置超时

1.在shop-gateway的application.properties中添加配置,设置的ReadTimeout是8秒,网上看的,说是全局设置:

ribbon.ReadTimeout=8000

ribbon.ConnectTimeout=6000

测试结果:java.util.concurrent.TimeoutException: null

2.在shop-gateway中application.properties添加配置:

ribbon.ReadTimeout=8000

ribbon.ConnectTimeout=6000

测试结果:java.util.concurrent.TimeoutException: null

3.在调用方shop-business中application.properties添加配置:

ribbon.ReadTimeout=8000

ribbon.ConnectTimeout=6000

测试结果:java.util.concurrent.TimeoutException: null

4.在调用方shop-business中application.properties添加配置:

shop-user-center.ribbon.ReadTimeout=8000

shop-user-center.ribbon.ConnectTimeout=6000

测试结果:成功。

四、总结

1.feign是客户端调用,shop-business是feignclient,所以在shop-business设置超时时间。

五、问题

1.如何设置全局超时时间?

直奔主题,FeignClient面对服务级有三种超时时间配置:

feign配置是在ribbon配置的基础上做了扩展,可以支持服务级超时时间配置,所以,feign配置和ribbon配置的效果应该是一样的。

SpringCloud对这两种配置的优先级顺序如下:

Feign局部配置 >Feign全局配置 >Ribbon局部配置 >Ribbon全局配置

在feign-core的jar包里有个Request类

在feign接口里加入这个参数就可以单独为接口单独设置超时时间了

调用的时候new 一下Options对象

这样就可以为那些单独需要很长时间才能完成的接口(比如大文件上传等)设置超时时间了。

参考: https://www.cnblogs.com/east7/p/15858644.html

https://www.jianshu.com/p/d4d183f0be5b


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11272991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存