限制外发HTTP请求 [英] Throttling Outgoing HTTP requests
问题描述
我正在使用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?
- 在单个服务器环境中.
- 在群集服务器环境中.
推荐答案
在单个服务器中,一种天真的解决问题的方法是:
In a single server a naive approach to solve your problem would be:
- 将请求和结果处理程序推入队列
- 具有一个定期处理程序,该处理程序每秒从队列中弹出一个元素并执行请求
- 使用结果或错误调用结果处理程序
以聚类的方式,您可以扩展先前的概念,并将其包装在事件总线地址上,以便像这样:
In a clustered way you could extend the previous concept and wrap it on an event bus address so it would be something like:
- 将带有请求的消息发送到地址并设置回复处理程序
- 该服务将按照之前的说明进行操作
- 服务将不依赖于调用处理程序,而是依赖消息回复处理程序来传递结果.
这篇关于限制外发HTTP请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!