解决ZuulException: Forwarding error以及Readed time out

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决ZuulException: Forwarding error以及Readed time out相关的知识,希望对你有一定的参考价值。

参考技术A 最近刚入坑微服务,总是会碰到很多坑,一个坑一个脚印,默默记下。
Problem 1:
其中一个微服务模块,启动,本身没有问题,postman测试接口也没有问题。同时在网关中配置了相关转发,例如:

但是通过网关访问就会出现问题,通过API网关路由来访问微服务,zuul默认路由规则 : http://zuul 的Host地址:zuul端口/要调用的服务名/服务方法地址,报错:
com.netflix.zuul.exception.ZuulException: Forwarding error......
Caused by: com.netflix.client.ClientException: null......
Caused by: java.lang.RuntimeException: java.net.SocketTimeoutException: Read timed out
是因为接口调用的时间过长,超过了等待时长,于是配置一下时长,在网关模块中application.yml配置

以及

还有

进行这样的配置之后,可以通过API网关路由来访问服务了,postman接口测试正常。
Problem 2:
微服务之间通讯的时候,由于配置了熔断器,发现A服务中每次调用B的时候,都会进入fallback,由此判断调用过程出现了问题。
其实还是上面说到的时间问题,我将fallback去掉之后,在controller 中try...catch捕获到了错误,定位错误:spring cloud java.util.concurrent.TimeoutException
【此处记录下,不去掉fallback也能捕捉错误,在client中try...catch就可以】
首先我尝试了在A服务的application.yml中设置了熔断器的检测时间:(熔断器检测时间(默认1秒))

但是并没有效果, 后来就关闭熔断器超时检测时间功能,也就是不超时

OK,到此问题都解决了,微服务自身运行正常,API网官访问也正常,微服务间通讯也正常

以上是关于解决ZuulException: Forwarding error以及Readed time out的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 ZuulException:转发错误

第一次调用 ZuulException (SendErrorFilter)

com.netflix.zuul.exception.ZuulException:Hystrix 读取超时

如何为 ZuulException 自定义 Spring Boot 控制器 API 响应

Spring Boot 微服务 com.netflix.zuul.exception.ZuulException:转发错误

Zuul Proxy 无法路由,导致 com.netflix.zuul.exception.ZuulException: Forwarding error