博客
关于我
Feign连接超时异常解决:Read timed out executing GET http://XXX
阅读量:668 次
发布时间:2019-03-16

本文共 1102 字,大约阅读时间需要 3 分钟。

今天,我在对Hystrix服务熔断验证时遇到了一个问题。服务提供方的代码如下:

@HystrixCommand(fallbackMethod = "getEmpBackup")@RequestMapping("/provider/circuit/breaker/get/emp")public ResultEntity
getEmp(@RequestParam("signal") String signal) throws InterruptedException { if ("bang".equals(signal)) { throw new RuntimeException("蹦!瞎卡拉卡!"); } if("sleep".equals(signal)) { Thread.sleep(5000); } return ResultEntity.successWithData(new Employee(666, "sam666", 666.66)); }

同时,该服务还有一个备用方法:

getEmpBackup(@RequestParam("signal") String signal) {    return ResultEntity.failed("circuitbreakworkded,withsignal=" + signal+", the Exception is: ");}

在测试过程中,我发现当调用服务接口时,有时会返回超时错误。错误信息显示:

Read timed out executing GET http://atguigu-provider/provider/circuit/breaker/get/emp?signal=sleep

这提示我,问题的根源在于服务消费方的Feign配置。通过调整Feign的超时设置,可以更好地处理服务不可用情况。具体做法如下:

feign:  client:    config:      default:        connectTimeout: 10000        readTimeout: 600000

经过上述调整,并重启相关服务后,服务熔断功能正常工作。

总的来说,问题是由于Feign的默认超时时间过短,导致当服务提供端长时间未响应时,Feign抛出了超时错误。通过调整连接和读取超时参数,可以更好地捕捉和处理服务不可用的情况,从而实现服务熔断的预期效果。

转载地址:http://flmqz.baihongyu.com/

你可能感兴趣的文章
mybtis-plus 出现 Wrong namespace
查看>>
2008年7月20日星期日
查看>>
c#启动本机程序
查看>>
用户登陆的验证码的制作
查看>>
判断远程文件是否存在
查看>>
升级java11后,maven命令打包报错
查看>>
springboot redis key乱码
查看>>
Win10禁用自带的笔记本键盘
查看>>
insmod模块的几种常见错误
查看>>
shell及脚本4——shell script
查看>>
写时复制集合 —— CopyOnWriteArrayList
查看>>
什么是redis的缓存雪崩, 穿透, 击穿?
查看>>
数据帧CRC32校验算法实现
查看>>
【转载】DSP基础--定点小数运算
查看>>
idea thymeleaf页面变量报错解决
查看>>
云游戏,打响5G第一战
查看>>
Docker 拉取镜像速度太慢
查看>>
HUAWEI防火墙通过IKE方式协商IPSec隧道(采用预共享密钥认证)
查看>>
计网复习3
查看>>
JDK动态代理的实现原理
查看>>