2015-06-07 12 views
8

Projemden birinde Apache HttpClient kullanıyorum. Ayrıca HttpClient ile birlikte PoolingHttpClientConnectionManager kullanıyorum.HttpClient'te setDefaultMaxPerRoute ve setMaxTotal ortalaması nedir?

Bu özelliklerin ne anlama geldiğini karıştırıyorum. Koddaki belgelere bakmayı denedim, ancak bu değişkenlerin etrafında herhangi bir belge göremiyorum, bu yüzden anlayamadım.

  • setMaxTotal
  • setDefaultMaxPerRoute
  • setConnectTimeout
  • setSocketTimeout
  • setConnectionRequestTimeout
  • benim kodunda kullanıyorum nasıl Aşağıda

setStaleConnectionCheckEnabled:

RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(5 * 1000).setSocketTimeout(5 * 1000) 
     .setStaleConnectionCheckEnabled(false).build(); 
PoolingHttpClientConnectionManager poolingHttpClientConnectionManager = new PoolingHttpClientConnectionManager(); 
poolingHttpClientConnectionManager.setMaxTotal(200); 
poolingHttpClientConnectionManager.setDefaultMaxPerRoute(20); 

CloseableHttpClient httpClientBuilder = HttpClientBuilder.create() 
     .setConnectionManager(poolingHttpClientConnectionManager).setDefaultRequestConfig(requestConfig) 
     .build(); 

Herkes bana bu özellikleri açıklayabilir, böylece orada hangi değerleri vermem gerektiğini anlayabilir ve karar verebilirim. Ayrıca, daha iyi performans elde etmek için yukarıda gösterildiği gibi kullanmam gereken başka özellikler var mı? I-istemci http kullanıyorum

4.3.1

+0

Peki, bu çok geniş olabilir. Sorduğum şey için tek hat cevabı olmalı mı? – john

cevap

6

Bazı parametreler kaynaktan toplanan olmalıdır http://hc.apache.org/httpclient-3.x/preference-api.html

Diğerleri de açıklanmıştır.

  • setMaxTotal

tüm yolları arasında izin verilen maksimum bağlantı sayısı.

  • setDefaultMaxPerRoute

setMaxPerRoute çağrısıyla aksi belirtilmedi bir rota için izin maksimum bağlantı sayısı. Önceden rotayı bildiğiniz zaman setMaxPerRoute ve kullanmadığınızda setDefaultMaxPerRoute kullanın.

  • setConnectTimeout bir bağlantı zaman aşımı istisna atmadan önce uzak sunucu ile kurulacak beklemek ne kadar süre

.

  • setSocketTimeout

sunucu zaman aşımı istisna atmadan önce çeşitli çağrılara yanıt vermek için ne kadar süre beklemek zorunda. Detaylar için bkz. http://docs.oracle.com/javase/1.5.0/docs/api/java/net/SocketOptions.html#SO_TIMEOUT.

  • istisna atmadan önce bağlantı havuzundan bir bağlantı ödeme çalışırken (bağlantı havuzu derhal döndürmez beklemek ne kadar süre

setConnectionRequestTimeout örneğin, tüm bağlantıları, eğer kontrol edildi).

potansiyel IOExceptions pahasına hafif performans iyileştirme için devre dışı bırakılabilir setStaleConnectionCheckEnabled. Bkz. http://hc.apache.org/httpclient-3.x/performance.html#Stale_connection_check

+1

Yardım için teşekkürler. 'SetDefaultMaxPerRoute' bırakarak tüm noktaları anladım. Sadece rotaları karıştırıyorum. Rota burada ne anlama geliyor? – john

+0

Bir ana bilgisayar adını belirten http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/conn/routing/HttpRoute.html adresinde daha ayrıntılı olarak tanımlanan bir HttpRoute örneğidir veya adres. Bu, örneğin, belirli bir ana bilgisayarın çok sayıda bağlantıdan faydalanacağını bildiğinizde, ancak diğer tüm ana bilgisayarlara çok sayıda bağlantıya izin vermek istemediğinizde kullanılabilir. – Pace