1

我需要发送 x HTTP 客户端请求。我想并行发送请求,但一次不超过 y。
我将解释:客户端只能同时处理 y 个请求。我需要向客户端发送 x 请求,而 x > y。
我不想等到所有第一个 y 请求都结束,然后再发送另一批 y 请求。这种方法效率不高,因为每时每刻,我的客户都可以处理 y 个请求。如果我等到所有第一个 y 结束再发送另一个 y 请求,客户端将不会被充分利用。

  1. 任何想法如何用 vert.x 实现它?
    我正在考虑一次发送 x 个请求,然后在每次处理程序获取回调时发送另一个请求。有意义吗?
  2. HttpClientOptions中的maxPoolSize是什么意思?它与并发请求有任何联系吗?

非常感谢!

4

2 回答 2

1

我正在回答我的问题......经过一些测试,所描述的测试不适用于任何反应器模式。这里的解决方案是使用 y 的线程轮询来发送 x 个任务。

于 2020-11-05T06:41:13.423 回答
0

我建议使用基于回调的解决方案,而不是依赖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

于 2020-11-04T09:33:57.350 回答