Опишу сразу структуру с которой имеем дело:
1. Есть асинхронный контроллер (с выделенным THREAD_POOL_EXECUTOR) возвращающий CompletableFuture.
2. Внутри этого контроллера выполняется логика и в середине этого выполнения необходимо отправить, например, 5 http запросов, получить их результат и продолжить выполнять логику контроллера.
Есть проблема именно в месте, где отправляются эти запросы - выполняется очень медленно всё.
Отправка вот:
RequestSendManager manager = new RequestSendManager();
DeferredResult<Map<BaseProtocol, RequestData>> res = manager
.sendToPool(dspDatas);
Map<BaseProtocol, RequestData> result =
(Map<BaseProtocol, RequestData>) res.getResult();
Как можно в этом месте сделать это асинхронно, не блокируя этим действием основной поток обработки, т.к. в этот момент приходят ещё запросы в этот контроллер и поток надо временно освободить, пока не будет получен результат из этих http ответов и продолжить выполнение логики?