Vert.x httpClient - есть идеи, как ограничить количество одновременных запросов?

Мне нужно отправить HTTP-запрос клиента. Я хочу отправлять запросы параллельно, но не более y за раз.
Поясню: клиент может одновременно обрабатывать только y запросов. Мне нужно отправить клиенту запрос x, а x > y.
Я не хочу ждать, пока закончатся все первые y-запросы, а затем отправлять еще много y-запросов. Этот подход неэффективен, потому что в каждый момент мой клиент может обрабатывать y запросов. Если я подожду, пока закончатся все первые y, чтобы отправить еще один запрос y, клиент не будет полностью использован.

  1. Любая идея, как ее реализовать с помощью vert.x?
    Я рассматриваю возможность отправки x запросов сразу, а затем отправлять еще один запрос каждый раз, когда обработчик получает обратный вызов. В этом есть смысл?
  2. В чем смысл maxPoolSize в HttpClientOptions? Связано ли это с параллельными запросами?

Большое спасибо!

2 ответа

Отвечаю на свой вопрос... После некоторых тестов описанный тест плохо масштабируется ни с одним реактором. Решение здесь - использовать опрос потока y для отправки x задач.

Я бы предложил использовать ваше решение, основанное на обратных вызовах, а не полагаться на maxPoolSize.

Из документации:

 * If an HttpClient receives a request but is already handling maxPoolSize requests it will attempt to put the new
 * request on it's wait queue.  If the maxWaitQueueSize is set and the new request would cause the wait queue to exceed
 * that size then the request will receive this exception.

https://github.com/eclipse-vertx/vert.x/blob/master/src/main/java/io/vertx/core/http/ConnectionPoolTooBusyException.java

Другие вопросы по тегам