2
我有一個擁有AsyncHttpClient的Akka actor。這個actor必須處理很多異步請求。由於我的系統無法同時處理數千個請求,因此我需要限制併發請求的數量。爲什麼async-http-client不會限制我的請求?
現在,我這樣做:
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
}
}
);
的問題是,請求從來沒有把在客戶端隊列和所有處理都像配置無關緊要。爲什麼不這樣做?
您是否測試過配置獨立?這是在單獨的主應用程序或單元測試中,以便您可以知道問題出在AsyncHttpClient還是Actor的某處。 – Luciano