TransferManager 上传后可以重用吗?

Adi*_*vek 6 aws-java-sdk

我正在使用 TransferManager 将文件上传到我的s3 存储桶。虽然文档说尽可能重用一个实例,但它也说一旦传输完成就应该调用关闭。

文档的相关部分:

TransferManager 负责管理连接、线程等资源;尽可能共享 TransferManager 的单个实例。TransferManager 与适用于 Java 的 AWS 开发工具包中的所有客户端类一样,是线程安全的。传输完成后调用 TransferManager.shutdownNow() 释放资源。

这是从字面上理解的,还是我们可以重用对象并在应用程序关闭时调用关闭?

一点背景知识:我们之前使用相同的 s3 客户端为每次上传创建一个 TransactionManager,但我们开始AbortedException在某些上传时遇到问题。

Adi*_*vek 3

在这里回答我自己的问题:我们在测试和生产中重用了传输管理器,没有任何问题。

AWS SDK 相关查询在此聊天中得到解答: https: //gitter.im/aws/aws-sdk-java

搜索带有“aws client reusable”的聊天日志应该指向团队中某人的相关评论。

上面链接的聊天中相关评论的文字记录:

soutchay 2018 年 2 月 13 日 17:08 - 大家好,我们有一个 Spring Boot Java 应用程序,使用 aws sdk 将对象上传到 S3。我们有一个 TransferManager bean,并使用它来执行上传和 waitForUploadResult。TransferManager 的文档说在 waitForUploadResult 完成后调用 shutdownNow() 。

AdityaVivek Mar 06 2018 11:08 - 大家好,我和@soutchay有同样的疑问,TransferManager上传后可以重用还是必须立即关闭?

jaramd Mar 06 2018 04:17 - 嗨 Aditya,您可以重用 TransferManager 对象,它实际上是线程安全的。它有一个执行器池,可以控制线程数量。因此,您不能跨越超过线程池大小的范围。