Spring Cloud Gateway Fallback по коду состояния 404 из маршрута

Я хочу перейти к резервному варианту, когда какой-либо из маршрутов возвращает код HTTP 404. Причина в том, что если ресурс не найден, маршрут должен попытаться получить его из резервного 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

person hnf1991    schedule 03.10.2019    source источник


Ответы (1)


Вы должны уведомить шлюз о сервере eureka с помощью этого

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

А затем запретить шлюзу регистрироваться в eureka.

eureka.client.register-with-eureka = false

Второй вариант важен, поскольку он вызывает ошибку 404 при балансировке нагрузки с использованием структуры lb: servicename.

person Numan Karaaslan    schedule 28.11.2020