AsyncHttpClient を所有する Akka アクターがあります。このアクターは、多くの非同期リクエストを処理する必要があります。私のシステムは何千ものリクエストを同時に処理できないため、同時リクエストの数を制限する必要があります。
今、私はこれをやっています:
AsyncHttpClientConfig config = new AsyncHttpClientConfig.Builder().setAllowPoolingConnection(true)
.addRequestFilter(new ThrottleRequestFilter(32))
.setMaximumConnectionsPerHost(16)
.setMaxRequestRetry(5)
.build();
final AsyncHttpClient httpClient = new AsyncHttpClient(new NettyAsyncHttpProvider(config));
アクターがメッセージを受信すると、次のようにクライアントを使用します。
Future<Integer> f = httpClient.prepareGet(url).execute(
new AsyncCompletionHandler<Integer>() {
@Override
public Integer onCompleted(Response response) throws Exception {
// handle successful request
}
@Override
public void onThrowable(Throwable t){
// handle failed request
}
}
);
問題は、リクエストがクライアント キューに入れられることはなく、構成が問題ではないかのようにすべて処理されることです。なぜこれがうまくいかないのですか?