Рассмотрим код:
private WebClient webClient;
public void some(MyObject myObject) {
return webClient.post()
.uri("/log/my-path")
.body(BodyInserters.fromObject(myObject))
.retrieve()
.bodyToMono(Void.class)
.subscribeOn(Schedulers.single());
}
Этот код «ждет», когда «появится» ответ, а затем завершается. (Например, retrieve()
называется). а как не дождаться ответа? Например, я делаю запрос и возвращаю Mono.empty
, не дожидаясь ответа. Как это сделать?
P.S. Прием, когда запрос отправляется без ожидания ответа, называется «выстрелил и забыл».
ОБНОВЛЕНО
- Никакие монофункции, такие как
then
, не работают. Потому что они вызвали послеbodyToMono
, который «ждет», пока не поступит HTTP-ответ. Например. ничего (асинхронное событие) не вызывается до завершенияbodyToMono
. - Статус "удалить"
return
тоже не работает. Может быть, в некоторыхmain
функциях он работает, но не в приложении Spring. Это не работает, потому чтоMono
только что создан в этом случае, но никто не запускает его. ЛюбыеMono
методы, такие какmap, flatMap
и т. Д., Являются просто "настройкой" функции, но не запуском Mono.
remove the 'return' statement and and it will be fire in the background.
Нет, в этом случае моно не запускается. - person Cherry   schedule 15.11.2018