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: ");
	}

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

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

一上来就怀疑是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

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

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

上一篇:dubbo负载均衡策略


下一篇:Effective Java笔记第一章创建和销毁对象第一节考虑用静态工厂方法代替构造器