我的要求很容易理解。
我想从我的Java Web应用程序调用Web服务,每分钟最多限制10次Web服务调用。在1分钟后,我可以建立另外10个连接,无论之前的10个webservice调用的状态(已完成或未完成)。
有人可以指导我实施此方法吗?任何教程或有用的链接?
答案 0 :(得分:5)
我们使用的RequestThrottler (gist)是inspired by this blog post。
用法:
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请求中无限期地等待。
答案 1 :(得分:3)
查看Apache Camel以及他对throttler http://camel.apache.org/throttler.html的实施情况。
答案 2 :(得分:0)
可以使用开源项目:http://code.google.com/p/valogato/