我正在使用 Spring Cloud Brixton.M3 和 Spring Boot 1.3.0.RELEASE。我在这方面有点陌生(尤其是在 Spring Cloud 中)。我已经创建了注册服务器(即 Eureka 实例)、配置服务器和网关。
根据我的要求,我在我的一个过滤器中拦截每个到达网关的请求,以从 Header 中提取所需的信息,并基于此我抛出异常或使用 Feign Client
转发/验证该请求。有时 hystrix 在无法访问相应服务或由于任何其他问题时抛出 HystrixRuntimeException
。
所以我想要的是:
- 为每个转发请求提供默认回退方法,以便我可以相应地读取和处理它。
@ControllerAdvice
以外的全局异常处理,因为我没有提供任何自定义@HystrixCommand
和 Controller 来调用服务(基于 AOP 的解决方案?)。- 是否可以拦截每个失败的请求并重试一定次数?它可能在内部发生,但我是否可以覆盖此功能并处理每个失败的请求,要么是因为
TimedOutException
要么是因为 HttpConnectionPool 异常?
更新
在 Zuul 网关中提供自己的路由是一种好习惯吗?一起使用 @RestController
和 @HystrixCommand
? (我认为这是个坏主意,因为在一段时间内我们最终会得到很多 Controller ,因此智能路由的实际使用不会像预期的那样工作)
最佳答案
目前有一个 open issue假装回退。还有一个 open issue用于 zuul 的回退。
关于java - Spring Cloud : How to define default fallback for Hystrix in Zuul gateway?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34058880/