Я пытаюсь добавить значение Dynami c для всего заголовка запроса перед передачей запроса в нисходящий поток.
Я создал определенный пользователем класс, который реализует org.springframework.cloud.gateway.filter.GlobalFilter
В этом классе мне нужно вызвать другие службы (2 реактивных redis и 1 вызов api), чтобы получить значение Dynami c, которое необходимо установить в заголовке.
Вот проблема, с которой я столкнулся прямо сейчас:
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
return chain.filter(exchange);
}
Подписка GatewayFilterChain.filter (exchange) была завершена до того, как были выполнены другие моноподписки (2 redis и 1 услуга). Следовательно, прежде чем я изменю обмен, запрос без добавления заголовка перейдет в нисходящий поток.
exchange.getRequest().mutate()
.header(HttpHeaders.AUTHORIZATION, "Bearer ".concat(token))
.build()
Чтобы избежать этой проблемы, я добавил задержку в моноподписке
chain.filter(exchange).delaySubscription(Duration.ofMillis(300L))
Но я не хочу вводить ручную задержку в системе, не могли бы вы посоветовать / посоветовать мне лучшее решение, чтобы GatewayFilterChain не подписывался до завершения другой моноподписки.