Vert.x httpClient - есть идеи, как ограничить количество одновременных запросов?
Мне нужно отправить HTTP-запрос клиента. Я хочу отправлять запросы параллельно, но не более y за раз.
Поясню: клиент может одновременно обрабатывать только y запросов. Мне нужно отправить клиенту запрос x, а x > y.
Я не хочу ждать, пока закончатся все первые y-запросы, а затем отправлять еще много y-запросов. Этот подход неэффективен, потому что в каждый момент мой клиент может обрабатывать y запросов. Если я подожду, пока закончатся все первые y, чтобы отправить еще один запрос y, клиент не будет полностью использован.
- Любая идея, как ее реализовать с помощью vert.x?
Я рассматриваю возможность отправки x запросов сразу, а затем отправлять еще один запрос каждый раз, когда обработчик получает обратный вызов. В этом есть смысл? - В чем смысл 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.