Feign由于调用服务出现超时导致的问题

导读:本篇文章讲解 Feign由于调用服务出现超时导致的问题,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.起因

     通过FeignClient指定服务名称,在从eureka获取一个服务的实例ip和端口,来调用某个接口获取数据出现,超时的情况!
在调用spu/page接口出现超时的情况

feign.RetryableException: Read timed out executing GET http://item-service/spu/page?page=1&rows=100

在这里插入图片描述
设置Feign的配置接口

@FeignClient("item-service")//调用item-service服务

在这里插入图片描述
GoodsApi:里面定义了公共的接口,这样一来那些服务需要使用只要继承该接口就可以实现,里面配置的调用方法,这样一来以后需要新增加某个接口我只要在GoodsApi中定义就可以,子类就会继承父类的方法!
在这里插入图片描述

2.排查

1.Eureka问题

一开始为以为是eureka服务没有被启动于是我就访问了eureka服务界面,可以看出服务是有启动的
在这里插入图片描述
并且我也在程序出现错误日志里面查看到了从eureka中获取到的服务地址
在这里插入图片描述

2.项目服务的问题

在想有没有可能是因为item-service服务的程序出现错误导致的超时,于是为就在服务调用的接口打上断点,可以看出请求已经到查询商品的服务接口了,也可以正常查询到数据,这个时候我就在想,有没有可能是因为为服务的接口查询的数据比较久(因为数据库是在外网不在本地可能网络原因导致查询慢)从而导致Feign以为服务超时了
在这里插入图片描述
并且我还通过浏览器访问,服务的ip:端口,查询了下数据页可以正常显示,就是慢了点
在这里插入图片描述

3.解决问题

如果是超时导致的那么我就只要设置下feign的超时时间就可以解决了,对配置文件(application.yml)中添加以下配置

feign:
  client:
    config:
      default:
        connectTimeout: 10000 #单位毫秒
        readTimeout: 10000 #单位毫秒

接着为在运行测试用例,可以看出数据已经被获取到了
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/83847.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!