Я использую spring-webflux 5.1.7-RELEASE. Я хочу вызвать обратный вызов для веб-клиента непосредственно перед отправкой запроса. Код для этого:
ExchangeFilterFunction logRequest (SomeLogObject someLogObject) {
return ExchangeFilterFunction.ofRequestProcessor(clientRequest -> {
/**
business logic for callback goes here
*/
return Mono.just(clientRequest);
});
}
//code for plugging in logRequest callback (at some othe place)
WebClient webClient = WebClient
.builder()
.clientConnector(new ReactorClientHttpConnector(HttpClient.from(tcpClient)))
.baseUrl(baseURL)
.filters(exchangeFilterFunctions -> exchangeFilterFunctions.add(logRequest(someLogObject)))
.build();
webClient
.get()
.uri(uriBuilder -> uriBuilder.path("some_uri_path").queryParams(queryParam).build())
.header("some_header_key", "some_header_value")
.retrieve().bodyToMono(String.class);
Здесь logRequest запускается в самом начале (задолго до запуска запроса). Что касается моей отладки, я обнаружил, что она запускается при вызове retrieve ().
Есть ли способ гарантировать, что logRequest запускается сразу перед отправкой запроса, а НЕ при создании моно?
Заранее спасибо