如何在Java Web应用程序中限制Web服务调用

时间:2011-10-20 07:29:48

标签: java tomcat6 throttling object-pooling

我的要求很容易理解。

我想从我的Java Web应用程序调用Web服务,每分钟最多限制10次Web服务调用。在1分钟后,我可以建立另外10个连接,无论之前的10个webservice调用的状态(已完成或未完成)。

有人可以指导我实施此方法吗?任何教程或有用的链接?

3 个答案:

答案 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/