本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将单例服务客户端实例与 AWS SDK for Java 2.x
中的服务客户端 AWS 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。这样可以确保适当的生命周期管理。