7

我的要求很容易理解。

我想从我的 Java Web 应用程序调用 Web 服务,限制为每分钟最多 10 个 Web 服务调用。1 分钟后,我可以再建立 10 个连接,而不管之前 10 个 Web 服务调用的状态(已完成或未完成)。

有人可以指导我实现这一点的方法吗?任何教程或有用的链接?

4

3 回答 3

5

我们使用受这篇博文启发的RequestThrottler (gist)

用法:

private static final int MAX_CALLS = 10;
private static final int PER_INTERVAL = 60000; // 60s
private static final int MAX_WAIT = 2000; // 2s

private RequestThrottler _throttler = new RequestThrottler(MAX_CALLS, PER_INTERVAL);
private SomeWebService _service = new SomeWebService();

public void callService() {
    throttler.startRequest(MAX_WAIT);
    _service.call();
}

并不是说您可能需要处理可能的拥塞,尤其是当您计划作为 Web 请求的一部分无限期等待时。

于 2011-10-20T08:26:45.937 回答
3

看看Apache Camel和他的节流器实现http://camel.apache.org/throttler.html

于 2011-10-20T08:39:46.867 回答
0

可以使用一个开源项目:http ://code.google.com/p/valogato/

于 2013-08-21T15:30:29.550 回答