限制传出 HTTP 请求

Throttling Outgoing HTTP requests

我正在使用 vert.x 作为服务器来接收搜索请求,然后在服务器上处理该请求以向各种外部服务发送多个传出 HTTP 请求。

对于异步行为,我选择使用 Vert.x 本机 http 客户端来使用 RxJava。

事实是,我使用的服务限制我每秒最多调用 1 次。

限制 NIO HTTP 传出请求的 best/simple 方法是什么?

  1. 在单服务器环境中。
  2. 在集群服务器环境中。

在单个服务器中,解决您的问题的一种天真的方法是:

  1. 将请求和结果处理程序推送到队列
  2. 有一个周期性处理程序,每秒从队列中弹出一个元素并执行请求
  3. 使用结果或错误调用结果处理程序

以集群的方式,您可以扩展之前的概念并将其包装在事件总线地址上,因此它类似于:

  1. 将消息发送到包含请求的地址并设置回复处理程序
  2. 该服务将像之前的解释一样工作
  3. 服务将依赖消息回复处理程序来传递结果,而不是调用处理程序。