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.
Tags und Links java multithreading apache-httpcomponents