Spring Cloud Gateway 限流降级插件冲突:多个 Filter 同时拦截报错?责任链优先级调度+冲突检测
公司的网关配了限流和降级两个 Filter。一次大促,流量触发了限流——RequestRateLimiter 返回了 429。按说限流拦截了就不该再走后续的 Filter 了。但 Hystrix 降级 Filter 也触发了,返回了 503。两个 Filter 同时想写响应,冲突了——客户端收到的状态码是 429,但 body 是 503 的降级 JSON。前端判断逻辑直接崩了。 Spring Cloud Gateway 的 Filter 是按责任链模式执行的,一个请求依次经过所有 Filter。问题在于:当一个 Filter 已经决定要拦截并返回了,它之后的 Filter 不知道前面已经拦截了,还在继续执行。 今天聊聊怎么给 Filter 设明确的优先级,让它们在冲突时按规则来,而不是同时抢着写响应。 责任链里的冲突怎么来的 Gateway 的 Filter 链执行顺序由 @Order 注解决定。默认情况下,Spring Cloud Gateway 的内置 Filter 顺序大致是: NettyRoutingFilter(-1) → 自定义 Filter A(0) → 自定义 F....