簡體   English   中英

多個 HttpAsyncClient 是否被認為是一種不好的做法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM