基于springboot服务间Feign调用超时的解决方案
解决springboot服务间Feign调用超时问题概述
1、起因
在完成项目功能需求的开发,经过自己测试以及通过测试组测试通过后,昨晚正式部署到线上环境进行正式运行前的最后一次的测试。但是在测试中,由A服务调用B服务接口时,***通过Feign调用(其实就是http请求,当A服务调用B服务时,如果不配置超时时间,那么A发出请求后,B应该立即响应,否则A服务会认为B已经断开连接)出现***连接超时的错误,错误信息:Read timed out…
2、原因
用idea开发debug模式调试代码时,在处理服务间调用时,由于debug模式调试代码花费一些时间,结果出现Fegin连接超时问题
3、解决方案
在springboot项目application.yml配置文件中添加
【基于springboot服务间Feign调用超时的解决方案】#解决跨服务问题
文章图片
4、使用Feign的好处
首先我们的项目使用了SpringCloud技术,而Feign可以和SpringCloud技术无缝整合。并且,你一旦使用了Feign作为http客户端,调用远程的http接口就会变得像调用本地方法一样简单。
5、项目如何使用Feign
(1) 首先你得引入Feign依赖的jar包:
gradle依赖:
compile "org.springframework.cloud:spring-cloud-netflix-core:1.3.2.RELEASE"Maven依赖:
文章图片
(2) 在properties配置文件中配置要调用的接口的URL路径(域名部分)
url.xapi=http://xapi.xuebusi.com(3) 声明要调用的远程接口
文章图片
6、说明:
(1) @FeignClient 是Feign提供的注解,用于通知Feign组件对该接口进行代理(不需要编写接口实现),使用者可直接通过@Autowired注入。
(2) @RequestMapping 是Spring提供的注解,这里可以直接使用以前使用SpringMVC时用过的各种注解,唯一不同的是,这里只是把注解用在了接口上。
(3) 如果将Feign与Eureka组合使用,@FeignClient(name = “xapi”)意为通知Feign在调用该接口方法时要向Eureka中查询名为 xapi 的服务,从而得到服务URL,
(4) 但是远程的http接口并不是我们自己的,我们无法把它注册到Eureka中,所以这里我们就使用 url = “${url.xapi}” 把要调用的接口的url域名部分直接写死到配置文件中。
feign超时问题解决必杀技 1、配置中添加:
feign:hystrix:enabled: false
2、添加:
hystrix:command:default:execution:timeout:enabled: false
3、添加:
ribbon:ReadTimeout: 10000ConnectTimeout: 10000
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- 基于|基于 antd 风格的 element-table + pagination 的二次封装
- 社保代缴公司服务费包含哪些
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 私有化轻量级持续集成部署方案--03-部署web服务(下)
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 探索免费开源服务器tomcat的魅力
- [源码解析]|[源码解析] NVIDIA HugeCTR,GPU版本参数服务器---(3)