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.
Konfiguration des Apache 5.x-basierten HTTP-Clients
Die Apache5HttpClient SDKs basieren auf Apache HttpClient 5.x
Greifen Sie auf Apache5HttpClient
In den meisten Situationen verwenden Sie den Apache5HttpClient ohne explizite Konfiguration. Sie deklarieren Ihre Service-Clients und das SDK konfiguriert sie Apache5HttpClient mit Standardwerten für Sie.
Wenn Sie den explizit konfigurieren Apache5HttpClient oder mit mehreren Service-Clients verwenden möchten, müssen Sie ihn für die Konfiguration verfügbar machen.
Keine Konfiguration erforderlich
Wenn Sie in Maven eine Abhängigkeit von einem Service-Client deklarieren, fügt das SDK eine Laufzeitabhängigkeit vom apache5-client Artefakt hinzu. Dadurch steht die Apache5HttpClient Klasse Ihrem Code zur Laufzeit zur Verfügung, aber nicht zur Kompilierzeit. Wenn Sie den Apache-based HTTP-Client nicht konfigurieren, müssen Sie keine Abhängigkeit dafür angeben.
Im folgenden XML-Snippet einer pom.xml Maven-Datei bringt die mit deklarierte Abhängigkeit <artifactId>s3</artifactId> automatisch den HTTP-Client mit. Apache-based Sie müssen keine spezielle Abhängigkeit dafür deklarieren.
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- The s3 dependency automatically adds a runtime dependency on the Apache5HttpClient--> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> </dependencies>
*Ersetzen Sie die rot angezeigte Version durch die Version des Java-SDKs, die Sie verwenden möchten. Finden Sie die neuesten Informationen auf Maven Central.
Mit diesen Abhängigkeiten können Sie keine expliziten HTTP-Konfigurationsänderungen vornehmen, da sich die Apache5HttpClient Bibliothek nur im Runtime-Classpath befindet.
Konfiguration erforderlich
Um die zu konfigurierenApache5HttpClient, müssen Sie bei der Kompilierung eine Abhängigkeit von der apache5-client Bibliothek hinzufügen.
Sehen Sie sich das folgende Beispiel einer pom.xml Maven-Datei an, um die Apache5HttpClient zu konfigurieren.
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.54.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <!-- By adding the apache5-client dependency, Apache5HttpClient will be added to the compile classpath so you can configure it. --> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache5-client</artifactId> </dependency> </dependencies>
*Ersetzen Sie die rot angezeigte Version durch die Version des Java-SDKs, die Sie verwenden möchten. Finden Sie die neuesten Informationen auf Maven Central.
Benutze und konfiguriere das Apache5HttpClient
Sie können eine Instanz von Apache5HttpClient konfigurieren und gleichzeitig einen Service-Client erstellen, oder Sie können eine einzelne Instanz so konfigurieren, dass sie von mehreren Service-Clients gemeinsam genutzt wird.
Bei beiden Ansätzen verwenden Sie den, Apache5HttpClient.Builder
Bewährtes Verfahren: Weisen Sie eine Apache5HttpClient Instanz einem Service-Client zu
Wenn Sie eine Instanz von konfigurieren müssen, empfehlen wir IhnenApache5HttpClient, die dedizierte Apache5HttpClient Instanz zu erstellen. Sie können dies tun, indem Sie die ClientBuilder HTTP-Methode des Builders des Service-Clients verwenden. Auf diese Weise wird der Lebenszyklus des HTTP-Clients vom SDK verwaltet, wodurch potenzielle Speicherlecks vermieden werden, wenn die Apache5HttpClient Instanz nicht geschlossen wird, wenn sie nicht mehr benötigt wird.
Das folgende Beispiel erstellt einen S3Client und konfiguriert die eingebettete Instanz von Apache5HttpClient mit den Werten MaxConnections und ConnectionTimeout. Die HTTP-Instanz wird mit der Methode von erstellt. httpClientBuilder S3Client.Builder
Importe
import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;
Code
S3Client s3Client = S3Client // Singleton: Use the s3Client for all requests. .builder() .httpClientBuilder(Apache5HttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) ) .build(); // Perform work with the s3Client. s3Client.close(); // Requests completed: Close all service clients.
Alternativer Ansatz: Teilen Sie eine Apache5HttpClient Instanz
Um die Ressourcen- und Speicherauslastung für Ihre Anwendung gering zu halten, können Sie eine konfigurieren Apache5HttpClient und sie für mehrere Service-Clients gemeinsam nutzen. Der HTTP-Verbindungspool wird gemeinsam genutzt, wodurch der Ressourcenverbrauch gesenkt wird.
Anmerkung
Wenn eine Apache5HttpClient Instanz gemeinsam genutzt wird, müssen Sie sie schließen, wenn sie bereit ist, gelöscht zu werden. Das SDK schließt die Instanz nicht, wenn der Service Client geschlossen wird.
Im folgenden Beispiel wird ein Apache-based HTTP-Client konfiguriert, der von zwei Service-Clients verwendet wird. Die konfigurierte Apache5HttpClient Instanz wird an die HttpClient-Methode jedes Builders übergeben. Wenn die Service-Clients und der HTTP-Client nicht mehr benötigt werden, schließt der Code sie explizit. Der Code schließt den HTTP-Client zuletzt.
Importe
import software.amazon.awssdk.http.SdkHttpClient; import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client;
Code
SdkHttpClient apache5HttpClient = Apache5HttpClient.builder() .maxConnections(100).build(); // Singletons: Use the s3Client and dynamoDbClient for all requests. S3Client s3Client = S3Client.builder() .httpClient(apache5HttpClient).build(); DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .httpClient(apache5HttpClient).build(); // Perform work with the s3Client and dynamoDbClient. // Requests completed: Close all service clients. s3Client.close(); dynamoDbClient.close(); apache5HttpClient.close(); // Explicitly close apache5HttpClient.