来自路由的404状态代码上的Spring Cloud Gateway回退

时间:2019-10-03 05:30:21

标签: spring-boot spring-cloud-gateway

当任何路由返回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

1 个答案:

答案 0 :(得分:0)

您必须使用此方法使网关知道eureka服务器

eureka.client.service-url.defaultZone = http:// user:pass @ localhost:8761 / eureka

然后阻止网关自行注册到eureka

eureka.client.register-with-eureka = false

第二个选项非常重要,因为它会导致使用lb:servicename结构进行负载平衡时出现404错误。