Как установить время ожидания для каждого маршрута в 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