AWS Java SDK - 将ProgressListener与TransferManager一起使用

问题描述 投票:0回答:1

我正在查看AWS SDK文档中为TransferManager提供的用法示例,特别是对于以下代码:

TransferManager tx = new TransferManager(
               credentialProviderChain.getCredentials());
Upload myUpload = tx.upload(myBucket, myFile.getName(), myFile);
 // Transfers also allow you to set a <code>ProgressListener</code> to receive
// asynchronous notifications about your transfer's progress.
myUpload.addProgressListener(myProgressListener);

我想知道我们这里是否有竞争条件。 AFAIU TransferManager异步工作,它可能会在Upload对象创建之后立即启动上传文件,甚至在我们添加监听器之前,所以如果我们使用文档中提供的代码段,似乎我们可能不会全部收到通知。我已经简要地看了一下addProgressListener,我没有看到在附加一个新的监听器时会重播过去的事件。我错了吗?我错过了什么吗?

java amazon-web-services amazon-s3 aws-sdk aws-java-sdk
1个回答
1
投票

如果您需要获取所有事件,我想这可以使用不同的upload方法来实现,该方法将ProgressListener作为参数。当然,使用此方法需要将您的bucketname,key和file封装到PutObjectRequest的实例中。

© www.soinside.com 2019 - 2024. All rights reserved.