HttpComponents PoolingHttpClientConnectionManager maxPerRoute und maxTotal?

7

Kann mir bitte jemand erklären, was setMaxPerRoute(max) und setMaxTotal(max) in Bezug auf HttpComponents PoolingHttpClientConnectionManager tun?

    
james 13.10.2013, 16:16
quelle

1 Antwort

20

Diese Einstellungen steuern die Größe des Verbindungspools.

  • setMaxTotal(max) definiert das allgemeine Verbindungslimit für einen Verbindungspool.
  • setMaxPerRoute(max) definiert ein Verbindungslimit für eine HTTP-Route. In einfachen Fällen können Sie dies als Hostlimit pro Ziel verstehen. Unter der Haube sind die Dinge etwas interessanter: HttpClient behält ein paar HttpRoute -Objekte, die jeweils eine Kette von Hosts darstellen, wie proxy1 -> proxy2 -> targetHost . Verbindungen werden pro Route zusammengefasst. Wenn Sie in einfachen Fällen den Standardmechanismus zum Erstellen von Routen verwenden und keine Proxy-Unterstützung bereitstellen, enthalten Ihre Routen wahrscheinlich nur den Zielhost. Daher wird das Limit pro Route-Verbindungspool effektiv zur Grenze pro Host.

Beispiel:

Angenommen, Sie haben setMaxPerRoute(5) und setMaxTotal(20) . Das bedeutet, dass Sie für jeden Zielhost gleichzeitig bis zu 5 Verbindungen verwenden können: 5 Verbindungen mit google.com, weitere 5 Verbindungen mit oracle.com und so weiter. Die Gesamtanzahl der offenen Verbindungen kann jedoch 20 unabhängig von der Anzahl der Hosts, mit denen Sie kommunizieren, nicht überschreiten.

    
Jk1 13.10.2013, 16:24
quelle