消费者去掉用服务者一定会存在超时
所以两个需要约定好
1、超时设置,故意设置超时演示出错情况
服务提供方8001故意写暂停程序
@GetMapping(value = "/payment/feign/timeout")public String paymentFeignTimeout(){//暂停几秒钟线程try {TimeUnit.SECONDS.sleep(3);} catch (InterruptedException e) {e.printStackTrace();}return serverPort;}
服务消费方80添加超时方法PaymentFeignService
@Component@FeignClient(value = "CLOUD-PAYMENT-SERVICE")public interface PaymentFeignService {@GetMapping("/payment/get/{id}")CommonResult getPaymentById(@PathVariable("id") Long id);@GetMapping(value = "/payment/feign/timeout")String paymentFeignTimeout();}
服务消费方80假超时方法OrderFeignController
@GetMapping(value = "/consumer/payment/feign/timeout")public String paymentFeignTimeout(){//openfeign-ribbon,客户端一般默认等待1秒钟return paymentFeignService.paymentFeignTimeout();}
测试:
http://localhost/consumer/payment/feign/timeout
错误页面
2、OpenFeign默认等待1秒钟,超过后报错
3、是什么
默认Feign客户端只等待一秒钟,但是服务端处理需要超过1秒钟,导致Feign客户端不想等待了,直接返回报错了。
为了避免这样的情况,有时候我们需要设置Feign客户端的超时控制。
4、YML文件里需要开启OpenFeign客户端超时控制
#设置feign客户端超时时间(OpenFeign默认支持ribbon)ribbon:#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间ReadTimeout: 5000#指的是建立连接后从服务器读取到可用资源所用的时间ConnectTimeout: 5000
https://www.reinforce.cn/t/638.html
会设置最小的
