Как регулировать вызовы веб-сервисов в веб-приложении Java - PullRequest
7 голосов
/ 20 октября 2011

Мое требование очень просто понять.

Я хочу вызывать веб-сервис из моего веб-приложения на Java с ограничением максимум 10 вызовов веб-сервиса в минуту.Через 1 минуту я могу установить еще 10 соединений, независимо от состояния предыдущих 10 вызовов веб-службы (завершенных или незавершенных).

Может кто-нибудь подсказать мне подход к реализации этого?Любые учебные или полезные ссылки?

Ответы [ 3 ]

5 голосов
/ 20 октября 2011

Мы используем 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();
}

Не то чтобы вам, возможно, пришлось позаботиться о возможной перегрузке, особенно если вы планируете ждать бесконечно долго в рамках веб-запросов.

3 голосов
/ 20 октября 2011

Посмотрите на Apache Camel и его реализацию throttler http://camel.apache.org/throttler.html.

0 голосов
/ 21 августа 2013

Для этого можно использовать проект с открытым исходным кодом: http://code.google.com/p/valogato/

...