当任何路由返回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
答案 0 :(得分:0)
您必须使用此方法使网关知道eureka服务器
eureka.client.service-url.defaultZone = http:// user:pass @ localhost:8761 / eureka
然后阻止网关自行注册到eureka
eureka.client.register-with-eureka = false
第二个选项非常重要,因为它会导致使用lb:servicename结构进行负载平衡时出现404错误。