Feign连接超时异常解决:Read timed out executing GET http://XXX

今天在对Hystrix服务熔断验证的时候,服务提供方代码如下:

	@HystrixCommand(fallbackMethod = "getEmpBackup")
	@RequestMapping("/provider/circuit/breaker/get/emp")
	public ResultEntity<Employee> 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));
	}

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

其中的线程本来只是为了验证熔断的功能,访问服务消费端的接口时却报了以下错误:

在这里插入图片描述
请求超时???

一上来就怀疑是Hystrix配置的问题,但是仔细一看最后一段错误提示: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

然后重启服务,再次访问该接口,成功实现服务熔断

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值