До сих пор я реализовывал асинхронный неблокирующий ввод-вывод с CompletionStages
, но сейчас я пытаюсь создать службу Spring-Webflux
при попытке повторно использовать существующий код.
У меня есть существующий HttpClient, который возвращаетCompletionStage
и как часть моей логики мне нужно выполнить 3 HTTP-вызова, каждый из которых зависит от последнего.Я знаю, что могу преобразовать CompletionStage
в Mono
, используя Mono.fromCompetionStage
, но мне интересно, как я могу свободно составлять вызовы, чтобы мой контроллер отдыха мог возвращать Mono, представляющий все операции в последовательности.
Я знаю, что, если бы я просто использовал CompletionStages
, я мог бы связать их, используя thenCompose
:
return client.firstCall()
.thenCompose(client::secondCall)
.thenCompose(client::thirdCall)
Любая идея, что лучший способ достичь этого, была бы с использованием Mono
.Если ответ состоит в том, чтобы взять полученный CompletionStage
из приведенного выше кода и выполнить Mono.fromCompletionStage
Я вижу небольшой смысл, так как Spring-Weblfux
поддерживает возврат CompletionStages
.