【问题标题】:Is TransferManager reusable after upload?TransferManager 上传后是否可以重复使用?
【发布时间】:2018-03-06 07:48:16
【问题描述】:

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

文档的相关部分:

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

这是字面意思,还是我们可以重用对象并在应用程序关闭时调用shutdown?

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

【问题讨论】:

  • 有人问了同样的问题on the AWS forums 也没有得到答案。
  • 我在他们的聊天中问过这个问题,并被告知它确实可以重复使用,但我失去了那个对话,不想在没有引用的情况下在这里发布答案。

标签: aws-java-sdk


【解决方案1】:

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

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

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

上面链接的聊天中相关cmets的成绩单:

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

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

jaramd Mar 06 2018 04:17 - 嗨 Aditya,您可以重复使用 TransferManager 对象,实际上是线程安全的。它有一个 具有控制线程数的执行器池。所以你不能跨越更多 该线程池大小。

【讨论】:

    猜你喜欢
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    相关资源
    最近更新 更多