7

私の要件は非常に理解しやすいものです。

1 分あたり最大 10 回の Web サービス呼び出しに制限して、Java Web アプリケーションから Web サービスを呼び出したいと考えています。1 分後、前の 10 回の Web サービス呼び出しの状態 (完了または未完了) に関係なく、別の 10 回の接続を確立できます。

誰かがこれを実装するためのアプローチを教えてくれますか? チュートリアルや役立つリンクはありますか?

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 に答える