我想在任何路由返回 404 HTTP 代码时进行回退。原因是,如果未找到资源,路由应尝试从回退 Uri 获取该资源。
以下是我的 .yml 定义。我试图实现的是,如果弹性搜索没有找到我的记录并返回 404。在回退(即数据库(中搜索。但是在这种情况下,我从网关获得404。有什么办法可以做到这一点。?
spring:
application:
name: gateway
sleuth:
sampler:
probability: 1.0
cloud:
gateway:
discovery:
locator:
enabled: true
- id: search_route
uri: lb://ELASTIC_SEARCH_SERVICE
predicates:
- Path=/unison/search/**
filters:
- name: Hystrix
args:
name: fallbackCommand
fallbackUri: forward:/search/rdbms
您必须使用此使网关知道尤里卡服务器
eureka.client.service-url.defaultZone=http://user:pass@localhost:8761/eureka
然后阻止网关本身注册到 eureka
eureka.client.register-with-eureka=false
第二个选项很重要,因为它在使用 lb:servicename 结构进行负载平衡时会导致 404 错误。