将单例服务客户端实例与 Amazon SDK for Java 2.x - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

将单例服务客户端实例与 Amazon SDK for Java 2.x

中的服务客户端 Amazon SDK for Java 2.x 是线程安全的。您可以为每个服务客户端创建一个实例,并在整个应用程序中重复使用该实例。这种方法可以提高性能并更有效地管理资源。

单一服务客户的好处

连接池

服务客户端维护内部 HTTP 连接池。创建和销毁这些池的成本很高。当您重复使用客户端时,这些池将在请求之间高效共享。

减少了初始化开销

创建客户端包括加载配置、建立凭据和初始化内部组件。单例实例消除了这种开销。

提高资源利用率

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

不要为每项操作创建新客户端:

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

重要注意事项

  • 服务客户端是线程安全的。您可以安全地跨多个线程共享它们。

  • 只有在应用程序关闭或不再需要客户端时才关闭客户端。 try-with-resources在应用程序级别使用client.close()或。

  • 如果您需要不同的配置,例如区域或证书,请为每个配置创建单独的单例实例。

如果您使用像 Spring 这样的依赖注入框架,请将服务客户端配置为单例 bean。这样可以确保适当的生命周期管理。