Configurar o cliente HTTP baseado em Apache 5.x - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar o cliente HTTP baseado em Apache 5.x

Acesse o Apache5 HttpClient

Para usar o, Apache5HttpClient você deve adicionar uma dependência apache5-client e configurar explicitamente Apache5HttpClient em seus clientes de serviço.

<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>

*Substitua a versão mostrada em vermelho pela versão do Java SDK que você deseja usar. Encontre as últimas novidades no Maven Central.

Usar e configurar o Apache5HttpClient

Você pode configurar uma instância do Apache5HttpClient junto com a criação de um cliente de serviço ou pode configurar uma única instância para compartilhar entre vários clientes de serviço.

Com qualquer abordagem, você usa o Apache5 HttpClient .Builder para configurar as propriedades do cliente HTTP baseado no Apache 5.

Melhor prática: dedicar uma HttpClient instância do Apache5 a um cliente de serviço

Se você precisar configurar uma instância do Apache5HttpClient, recomendamos que você crie a instância Apache5HttpClient dedicada. Você pode fazer isso usando o httpClientBuilder método do construtor do cliente de serviço. Dessa forma, o ciclo de vida do cliente HTTP é gerenciado pelo SDK, o que ajuda a evitar possíveis vazamentos de memória se a instância do Apache5HttpClient não for fechada quando não for mais necessária.

O exemplo a seguir cria um S3Client e configura a instância incorporada Apache5HttpClient com valores maxConnections e connectionTimeout. A instância HTTP é criada usando o método httpClientBuilder do S3Client.Builder.

Importações

import software.amazon.awssdk.http.apache5.Apache5HttpClient; import software.amazon.awssdk.services.s3.S3Client; import java.time.Duration;

Código

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.

Abordagem alternativa: compartilhar uma instância do Apache5HttpClient

Para ajudar a reduzir o uso de recursos e memória do seu aplicativo, você pode configurar um Apache5HttpClient e compartilhá-lo entre vários clientes de serviço. O pool de conexões HTTP será compartilhado, o que reduz o uso de recursos.

nota

Quando uma instância do Apache5HttpClient é compartilhada, você deve fechá-la quando ela estiver pronta para ser descartada. O SDK não fechará a instância quando o cliente de serviço for fechado.

O exemplo a seguir configura um cliente HTTP baseado em Apache, que é usado por dois clientes de serviço. A ApacheHttpClient instância configurada é passada para o método HttpClient de cada construtor. Quando os clientes do serviço e o cliente HTTP não são mais necessários, o código os fecha explicitamente. O código fecha o cliente HTTP por último.

Importações

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;

Código

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.