feign默认的等待一秒钟内,服务提供者没有处理好业务,会报错
可以写个demo说明,如下
一:服务提供者刻意暂停3秒,在 提供者 controller中加入如下代码
@GetMapping(value = "/payment/feign/timeout")
public String paymentFeignTimeout(){
try {
TimeUnit.SECONDS.sleep(3);
}catch (InterruptedException e) {
e.printStackTrace();
}
return serverPort;
}
二:消费者接口
@GetMapping(value = "/payment/feign/timeout")
public String paymentFeignTimeout();
三:消费者controller
@GetMapping(value = "/consumer/payment/feign/timeout")
public String paymentFeignTimeout(){
return paymentFeignService.paymentFeignTimeout();
}
四:测试,报错
五:如何解决这个问题呢?只需要在消费者yml中加入以下配置就可
ribbon:
ReadTimeout: 5000 #读取资源时间
ConnectTimeout: 5000 #建立链接时间
结果:成功访问,不再报错