Как установить время ожидания для каждого маршрута в Spring Cloud Gateway?

Есть ли способ установить разные значения времени ожидания для каждого маршрута в облачном шлюзе Spring? напр. /route1 - 30 с /route2 - 20 с

1 ответ

Да, мы можем сделать то же самое, определив разные hystrix Команда для разных маршрутов. Рассмотрим следующий пример, где для route_1 время ожидания составляет 15 секунд, так как hystrix команда используется здесь default настроен с таймаутом 15 секунд.

 # ===========================================
 # Timeout 15 seconds
  - id: route_1
    uri: ${test.uri}
    predicates:
    - Path=/timeout/**
    filters:
    - name: Hystrix
      args:
        name: default
        fallbackUri: forward:/hystrixfallback

hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 15000

Теперь для route_2 the hystrix Используемая команда applicationTimeOut с таймаутом 5 секунд.

# ===========================================
  # Timeout 5 seconds
  - id: route_2
    uri: ${test.uri}/count
    predicates:
    - Path=/count
    filters:
    - name: Hystrix
      args:
        name: applicationTimeOut
        fallbackUri: forward:/hystrixfallback

hystrix.command.applicationTimeOut.execution.isolation.thread.timeoutInMilliseconds: 5000

Теперь для route_3 the hystrix Используемая команда apiTimeOut с таймаутом 2 секунды.

# ===========================================   
  # Timeout 2 seconds
    - id: route_3
    uri: ${test.uri}
    predicates:
    - Path=/event/**
    filters:
    - name: Hystrix
      args:
        name: apiTimeOut
        fallbackUri: forward:/hystrixfallback
hystrix.command.apiTimeOut.execution.isolation.thread.timeoutInMilliseconds: 2000

Согласно документации Spring Cloud Gateway это намного проще:

https://cloud.spring.io/spring-cloud-gateway/reference/html/

Таким образом, вы можете настроить таймауты подключения и чтения для каждого маршрута, например:

  - id: per_route_timeouts
    uri: https://example.org
    predicates:
      - name: Path
        args:
          pattern: /delay/{timeout}
    metadata:
      response-timeout: 200
      connect-timeout: 200
Другие вопросы по тегам