Выполнение асин c http звонков изнутри spring-webflux - PullRequest
0 голосов
/ 23 февраля 2020

У нас есть приложение на основе Spring Webflux, которое возвращает поток-ответ. Само приложение блокирует вызовы к нисходящим сервисам и по сути действует как агрегатор. Каждый последующий запрос является блокирующим HTTP-запросом POST и может занимать различное количество времени (порядка нескольких секунд).

Текущий шаблон, которым мы следуем, должен иметь следующее:

Mono.fromCallable(() -> {

//client code for the blocking call

}).subscribeOn(Schedulers.boundedElastic()).flux()

Если у нас большое количество входящих соединений, это, по сути, означает, что мы продолжаем создавать много потоков для этих соединений, и каждый поток блокируется при ожидании ответа.

Лучше бы вместо этого использовать AsyncHTTPClient, который будет использовать NIO для выдачи неблокирующих запросов из обычных операций. Кто-нибудь может привести пример того, как это будет работать, и каковы возможные преимущества / недостатки этого подхода?

...