設定 Apache 5.x 型 HTTP 用戶端 - AWS SDK for Java 2.x

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 Apache 5.x 型 HTTP 用戶端

存取 Apache5HttpClient

若要使用 Apache5HttpClient,您必須在 上新增相依性,apache5-client並在您的服務用戶端Apache5HttpClient上明確設定 。

<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.41.0*</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3</artifactId> </dependency> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>apache5-client</artifactId> </dependency> </dependencies>

*將紅色顯示的版本取代為您要使用的 Java 開發套件版本。尋找 Maven Central 的最新資訊。

使用和設定 Apache5HttpClient

您可以設定 執行個體Apache5HttpClient以及建置服務用戶端,也可以設定單一執行個體以在多個服務用戶端之間共用。

透過任一方法,您可以使用 Apache5HttpClient.Builder 來設定 Apache 5 型 HTTP 用戶端的屬性。

最佳實務:將 Apache5HttpClient 執行個體專用於服務用戶端

如果您需要設定 的執行個體Apache5HttpClient,我們建議您建置專用Apache5HttpClient執行個體。您可以使用服務用戶端建置器的 httpClientBuilder 方法來執行此操作。如此一來,HTTP 用戶端的生命週期由 SDK 管理,這有助於避免在Apache5HttpClient執行個體不再需要時關閉時造成潛在的記憶體流失。

下列範例會建立 S3Client,並使用 Apache5HttpClient maxConnections 和 connectionTimeout 值設定 的內嵌執行個體。HTTP 執行個體是使用 的 httpClientBuilder方法建立。 S3Client.Builder

匯入

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.

替代方法:共用Apache5HttpClient執行個體

為了協助降低應用程式的資源和記憶體用量,您可以設定 ,Apache5HttpClient並在多個服務用戶端之間共用。HTTP 連線集區將共用,這會降低資源用量。

注意

共用Apache5HttpClient執行個體時,您必須在準備好進行處置時將其關閉。當服務用戶端關閉時,軟體開發套件不會關閉執行個體。

下列範例會設定兩個服務用戶端所使用的 Apache 型 HTTP 用戶端。設定的ApacheHttpClient執行個體會傳遞至每個建置器的 httpClient 方法。當不再需要服務用戶端和 HTTP 用戶端時,程式碼會明確關閉它們。程式碼最後會關閉 HTTP 用戶端。

匯入

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.