AWS Java SDK - 将 ProgressListener 与 TransferManager 结合使用
AWS Java SDK - using ProgressListener with TransferManager
我正在查看 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
并且我没有看到过去的事件会在附加新的侦听器时重播。我错了吗?我错过了什么吗?
如果您需要获取所有事件,我想这可以使用将 ProgressListener
作为参数的不同 upload
方法来实现。当然,使用这种方法需要将你的bucketname、key、file封装到PutObjectRequest
.
的实例中
我正在查看 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
并且我没有看到过去的事件会在附加新的侦听器时重播。我错了吗?我错过了什么吗?
如果您需要获取所有事件,我想这可以使用将 ProgressListener
作为参数的不同 upload
方法来实现。当然,使用这种方法需要将你的bucketname、key、file封装到PutObjectRequest
.