最初重新启动API服务时。如果我直接调用API服务,它可以工作,但如果我通过假装客户端调用它,我会看到hystrix回退消息几秒钟。如果我通过zuul调用它时API服务没有运行,我将看到以下错误消息:
com.netflix.zuul.exception.ZuulException:Hystrix Readed超时
我怎么解决这个问题?
默认情况下,当上游服务不可用而不是投掷503/404时,Zuul会抛出异常。您需要扩展ErrorFilter
并使用自定义行为处理异常。
这就是为什么当API服务没有运行时你得到ZuulException
。
在Zuul swallows 503 exceptions from upstream microservices GitHub线程中已经详细讨论了这种行为。
处理此异常的一些方法在此SO线程中解释:Customizing Zuul Exception。