[英]Is multiple HttpAsyncClient's considered a bad practice?
我的應用程序必須提供請求“轉發”機制,從某種意義上說,它處理傳入的請求並通過從基於請求確定的“目標”系統之一檢索數據來響應它。 這是通過 HttpAsyncClient 的集合實現的,根據它從中檢索數據的系統,每個 HttpAsyncClient 都有自己的配置(MaxConnections、MaxPerRouteConnections 等)。
foreach (TargetSystem t: systems) {
RequestConfig rc = RequestConfig.custom()
.setConnectionRequestTimeout(s.timeout)
.setConnectTimeout(s.timeout)
.setSocketTimeout(s.timeout)
.build();
HttpAsyncClientBuilder b = HttpAsyncClients.custom()
.setDefaultRequestConfig(rc)
.setMaxConnTotal(t.maxConnections)
.setMaxConnPerRoute(t.maxPerRouteConnections);
t.client = b.build();
t.client.start();
}
然后,我選擇正確的目標客戶端並將其用於異步 HTTP 請求。 問題是,對於所有目標系統之間的流量,這是可接受的做法還是僅應使用一個 HttpAsyncClient ? 目前,為每個客戶端打開了許多線程(作為 CPU 的數量),因此對於 10 個目標,我最終擁有 > 100 個線程。 我想限制每個系統的最大套接字數,並限制為每個系統(或所有 http 客戶端出站流量)提供服務的線程數。
每個應用程序或不同的服務應該只有一個HttpAsyncClient
實例。 將HttpASyncClient
視為可以維護多個會話/選項卡的瀏覽器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.