Use instâncias de cliente de serviço singleton com o AWS SDK for Java 2.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á.

Use instâncias de cliente de serviço singleton com o AWS SDK for Java 2.x

Os clientes de serviço no AWS SDK for Java 2.x são seguros. Você pode criar uma instância de cada cliente de serviço e reutilizá-la em todo o aplicativo. Essa abordagem melhora o desempenho e gerencia os recursos com mais eficiência.

Benefícios dos clientes de serviços únicos

Agrupamento de conexões

Os clientes de serviço mantêm pools de conexões HTTP internos. Criar e destruir esses pools é caro. Quando você reutiliza clientes, esses pools são compartilhados de forma eficiente entre as solicitações.

Redução da sobrecarga de inicialização

A criação de um cliente envolve carregar a configuração, estabelecer credenciais e inicializar componentes internos. As instâncias singleton eliminam essa sobrecarga.

Melhor utilização dos recursos

Clientes singleton evitam a exaustão de recursos que pode ocorrer quando você cria várias instâncias de clientes.

Crie e use clientes de serviço singleton

O exemplo a seguir mostra como criar e usar clientes de serviço singleton:

// Create one instance and use it throughout the application. public class ServiceClientSource { private static final S3Client s3Client = S3Client.create(); public static S3Client getS3Client() { return s3Client; } }

Não crie novos clientes para cada operação:

// This approach creates unnecessary overhead. public void badExample() { try (S3Client s3 = S3Client.create()) { s3.listBuckets(); } }

Considerações importantes

  • Os clientes do serviço são seguros. Você pode compartilhá-los com segurança em vários tópicos.

  • Feche clientes somente quando o aplicativo for encerrado ou se você não precisar mais do cliente. Use client.close() ou try-with-resources no nível do aplicativo.

  • Se você precisar de configurações diferentes, como regiões ou credenciais, crie instâncias singleton separadas para cada configuração.

Se você usa estruturas de injeção de dependência como o Spring, configure os clientes de serviço como beans únicos. Isso garante o gerenciamento adequado do ciclo de vida.