我的要求很容易理解。
我想从我的 Java Web 应用程序调用 Web 服务,限制为每分钟最多 10 个 Web 服务调用。1 分钟后,我可以再建立 10 个连接,而不管之前 10 个 Web 服务调用的状态(已完成或未完成)。
有人可以指导我实现这一点的方法吗?任何教程或有用的链接?
我的要求很容易理解。
我想从我的 Java Web 应用程序调用 Web 服务,限制为每分钟最多 10 个 Web 服务调用。1 分钟后,我可以再建立 10 个连接,而不管之前 10 个 Web 服务调用的状态(已完成或未完成)。
有人可以指导我实现这一点的方法吗?任何教程或有用的链接?
我们使用受这篇博文启发的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 请求的一部分无限期等待时。
可以使用一个开源项目:http ://code.google.com/p/valogato/