限制外发HTTP请求 [英] Throttling Outgoing HTTP requests

查看:58
本文介绍了限制外发HTTP请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用vert.x作为服务器来接收搜索请求,然后在服务器上将其处理为针对各种外部服务的多个传出HTTP请求.

I am using vert.x as a server to receive a search request which is then processed on the server to multiple outgoing HTTP requests to various external services.

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

For asynchronous behavior I have chosen to use RxJava using Vert.x native http client.

问题是,我正在使用的服务将我限制为每秒最多1个呼叫.

Thing is, the services I am using limit me to maximum 1 call per second.

限制NIO HTTP传出请求的最佳/简单方法是什么?

What would be the best/simple way to throttle NIO HTTP outgoing requests?

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

推荐答案

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

In a single server a naive approach to solve your problem would be:

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

以聚类的方式,您可以扩展先前的概念,并将其包装在事件总线地址上,以便像这样:

In a clustered way you could extend the previous concept and wrap it on an event bus address so it would be something like:

  1. 将带有请求的消息发送到地址并设置回复处理程序
  2. 该服务将按照之前的说明进行操作
  3. 服务将不依赖于调用处理程序,而是依赖消息回复处理程序来传递结果.

这篇关于限制外发HTTP请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆