Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
HTTP-Clients
Sie können den HTTP-Client ändern, der für Ihren Service-Client verwendet werden soll, sowie die Standardkonfiguration für HTTP-Clients mit dem ändern AWS SDK for Java 2.x. In diesem Abschnitt werden HTTP-Clients und Einstellungen für das SDK beschrieben.
Im SDK for Java verfügbare HTTP-Clients
Synchrone Clients
Synchrone HTTP-Clients im SDK for Java implementieren die SdkHttpClientS3Client
oder derDynamoDbClient
, erfordert die Verwendung eines synchronen HTTP-Clients. Der AWS SDK for Java bietet drei synchrone HTTP-Clients.
- ApacheHttpClient (Standard)
-
ApacheHttpClient
ist der Standard-HTTP-Client für synchrone Service-Clients. Hinweise zur Konfiguration von finden Sie ApacheHttpClient
unterDen Apache-basierten HTTP-Client konfigurieren. - AwsCrtHttpClient
-
AwsCrtHttpClient
bietet hohen Durchsatz und blockierungsfreie I/O. Es basiert auf dem AWS Common Runtime (CRT) Http Client. Hinweise zur Konfiguration AwsCrtHttpClient
und Verwendung mit Service-Clients finden Sie unterAWS CRT-basierte HTTP-Clients konfigurieren. - UrlConnectionHttpClient
-
Um die Anzahl der von Ihrer Anwendung verwendeten JAR-Dateien und Bibliotheken von Drittanbietern zu minimieren, können Sie die verwenden UrlConnectionHttpClient
. Hinweise zur Konfiguration von finden UrlConnectionHttpClient
Sie unterDen URL-verbindungsbasierten HTTP-Client konfigurieren.
Asynchrone Clients
Asynchrone HTTP-Clients im SDK for Java implementieren die SdkAsyncHttpClientS3AsyncClient
oder derDynamoDbAsyncClient
, erfordert die Verwendung eines asynchronen HTTP-Clients. Der AWS SDK for Java bietet zwei asynchrone HTTP-Clients.
- NettyNioAsyncHttpClient (Standard)
-
NettyNioAsyncHttpClient
ist der Standard-HTTP-Client, der von asynchronen Clients verwendet wird. Hinweise zur Konfiguration von finden Sie NettyNioAsyncHttpClient
unterDen Netty-basierten HTTP-Client konfigurieren. - AwsCrtAsyncHttpClient
-
Der AwsCrtAsyncHttpClient
basiert auf dem AWS Common Runtime (CRT) -HTTP-Client. Hinweise zur Konfiguration von finden Sie AwsCrtAsyncHttpClient
unterAWS CRT-basierte HTTP-Clients konfigurieren.
Empfehlungen für HTTP-Clients
Bei der Auswahl einer HTTP-Client-Implementierung spielen mehrere Faktoren eine Rolle. Verwenden Sie die folgenden Informationen als Entscheidungshilfe.
Flussdiagramm für Empfehlungen
Das folgende Flussdiagramm enthält allgemeine Hinweise, anhand derer Sie bestimmen können, welcher HTTP-Client verwendet werden soll.
![Flussdiagramm der HTTP-Client-Empfehlungen.](images/JavaDevGuide-HTTPflowchart-DI.png)
Vergleich von HTTP-Clients
Die folgende Tabelle enthält detaillierte Informationen für jeden HTTP-Client.
HTTP-Client | Synchronisieren oder asynchron | Wann sollte dies verwendet werden? | Einschränkung/Nachteil |
---|---|---|---|
Apache-basierter HTTP-Client (Standard-Synchronisierungs-HTTP-Client) |
Synchronisierung | Verwenden Sie ihn, wenn Sie eine niedrige Latenz einem hohen Durchsatz vorziehen | Langsamere Startzeit im Vergleich zu anderen HTTP-Clients |
Auf URL-Verbindung basierender HTTP-Client | Synchronisierung | Verwenden Sie ihn, wenn Sie unbedingt die Abhängigkeiten von Drittanbietern einschränken möchten | Unterstützt nicht die HTTP-PATCH-Methode, die für einige APIS wie Amazon APIGateway-Aktualisierungsvorgänge erforderlich ist |
AWS CRT-basierter Sync-HTTP-Client 1 | Synchronisierung |
• Verwenden Sie es, wenn Ihre Anwendung in läuft AWS Lambda • Verwenden Sie es, wenn Sie einen hohen Durchsatz einer niedrigen Latenz vorziehen • Verwenden Sie es, wenn Sie SDK-Clients synchronisieren möchten |
N/A |
Netty-basierter HTTP-Client (standardmäßiger asynchroner HTTP-Client) |
Asynchron |
• Verwenden Sie es, wenn Ihre Anwendung APIs aufruft, für die HTTP/2-Unterstützung erforderlich ist, z. B. die Kinesis-API SubscribeToShard |
Langsamere Startzeit im Vergleich zu anderen HTTP-Clients |
AWS CRT-basierter asynchroner HTTP-Client 1 | Asynchron | • Verwenden Sie es, wenn Ihre Anwendung in läuft AWS Lambda • Verwenden Sie es, wenn Sie einen hohen Durchsatz einer niedrigen Latenz vorziehen • Verwenden Sie es, wenn Sie asynchrone SDK-Clients bevorzugen |
• Unterstützt keine Service-Clients, die HTTP/2-Unterstützung benötigen, wie und |
1 Aufgrund ihrer zusätzlichen Vorteile empfehlen wir, wenn möglich die AWS CRT-basierten HTTP-Clients zu verwenden.
Standardeinstellungen für die intelligente Konfiguration
Die AWS SDK for Java 2.x (Version 2.17.102 oder höher) bietet eine Funktion für intelligente Standardeinstellungen für Konfigurationen. Diese Funktion optimiert zwei HTTP-Client-Eigenschaften zusammen mit anderen Eigenschaften, die den HTTP-Client nicht beeinflussen.
Die Standardeinstellungen der intelligenten Konfiguration legen sinnvolle Werte für die tlsNegotiationTimeoutInMillis
Eigenschaften connectTimeoutInMillis
und fest, die auf einem von Ihnen angegebenen Standardmoduswert basieren. Sie wählen den Standardmoduswert auf der Grundlage der Eigenschaften Ihrer Anwendung.
Weitere Informationen zu den Standardeinstellungen für intelligente Konfigurationen und zur Auswahl des Standardmoduswerts, der für Ihre Anwendungen am besten geeignet ist, finden Sie im Referenzhandbuch für AWS SDKs und Tools.
Im Folgenden finden Sie vier Möglichkeiten, den Standardmodus für Ihre Anwendung festzulegen.
Wenn Sie den Standardmodus global mit der Systemeigenschaft, der Umgebungsvariablen oder der AWS Konfigurationsdatei festlegen, können Sie die Einstellungen beim Erstellen eines HTTP-Clients überschreiben.
Wenn Sie mit httpClientBuilder()
dieser Methode einen HTTP-Client erstellen, gelten die Einstellungen nur für die Instanz, die Sie gerade erstellen. Ein Beispiel dafür wird hier gezeigt. Der Netty-basierte HTTP-Client in diesem Beispiel überschreibt alle global für und festgelegten Standardmoduswerte. connectTimeoutInMillis
tlsNegotiationTimeoutInMillis