我使用PoolingHttpClientConnectionManager用於發送多個並行的GET/POST請求以下服務:如何使用PoolingHttpClientConnectionManager限制同一主機(setMaxPerRoute)的連接?
(1)http://localhost:8080/submit
(2)http://localhost:8080/query
兩種服務大量使用,但所述第一服務(1)具有更高的優先權。
我需要爲服務(1)設置setMaxPerRoute,以便它將消耗80%的可用連接。 剩餘的20%限制將被分配給具有較長超時的其他請求(包括服務(2))。這裏是我的代碼:
...
PoolingHttpClientConnectionManager httpClientManager =
new PoolingHttpClientConnectionManager();
httpClientManager.setMaxTotal(10);
httpClientManager.setDefaultMaxPerRoute(2);
HttpHost httpHost = new HttpHost("http://localhost/submit",8080);
HttpRoute submitRoute = new HttpRoute(httpHost);
httpClientManager.setMaxPerRoute(submitRoute, 8);
...
問題是,HttpHost顯然不能相同,以區分不同的路線。實際上,兩個URL具有相同的主機(http://localhost:8080),但具有不同的請求頁面。在結果中,兩個服務都使用相同的資源。
有什麼辦法可以對同一個主機實現這樣的限制嗎?
感謝您的幫助。