私の要件は非常に理解しやすいものです。
1 分あたり最大 10 回の Web サービス呼び出しに制限して、Java Web アプリケーションから Web サービスを呼び出したいと考えています。1 分後、前の 10 回の Web サービス呼び出しの状態 (完了または未完了) に関係なく、別の 10 回の接続を確立できます。
誰かがこれを実装するためのアプローチを教えてくれますか? チュートリアルや役立つリンクはありますか?
私の要件は非常に理解しやすいものです。
1 分あたり最大 10 回の Web サービス呼び出しに制限して、Java Web アプリケーションから Web サービスを呼び出したいと考えています。1 分後、前の 10 回の Web サービス呼び出しの状態 (完了または未完了) に関係なく、別の 10 回の接続を確立できます。
誰かがこれを実装するためのアプローチを教えてくれますか? チュートリアルや役立つリンクはありますか?
このブログ投稿に触発された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 リクエストの一部として無期限に待機する予定がある場合は、輻輳の可能性に注意する必要があるかもしれません。
Apache Camelと彼のスロットルの実装http://camel.apache.org/throttler.htmlを見てください。