У нас есть приложение на основе Spring Webflux, которое возвращает поток-ответ. Само приложение блокирует вызовы к нисходящим сервисам и по сути действует как агрегатор. Каждый последующий запрос является блокирующим HTTP-запросом POST и может занимать различное количество времени (порядка нескольких секунд).
Текущий шаблон, которым мы следуем, должен иметь следующее:
Mono.fromCallable(() -> {
//client code for the blocking call
}).subscribeOn(Schedulers.boundedElastic()).flux()
Если у нас большое количество входящих соединений, это, по сути, означает, что мы продолжаем создавать много потоков для этих соединений, и каждый поток блокируется при ожидании ответа.
Лучше бы вместо этого использовать AsyncHTTPClient, который будет использовать NIO для выдачи неблокирующих запросов из обычных операций. Кто-нибудь может привести пример того, как это будет работать, и каковы возможные преимущества / недостатки этого подхода?