【问题标题】:Asynchronous multiple files upload to AWS S3 bucket异步多个文件上传到 AWS S3 存储桶
【发布时间】:2020-04-08 15:52:05
【问题描述】:

我想通过 AWS Java SDK (aws-java-sdk-s3-1.11.66.jar) 的传输管理器将多个文件上传到 AWS S3 存储桶,所以我的功能在这里:

public static void uploadDirectory(String virtualDirectoryKeyPrefix, File directory) {
    try {
        MultipleFileUpload multipleFileUpload = instance.transferManager.uploadFileList(
                instance.bucketName,
                virtualDirectoryKeyPrefix,
                directory,
                Arrays.asList(Objects.requireNonNull(directory.listFiles())));

        multipleFileUpload.waitForCompletion();
    } catch (InterruptedException e) {
        Logger.error("Not able to write to s3 bucket : " + virtualDirectoryKeyPrefix, e);
    }
}

只有当我调用 'waitForCompletion' 方法并且它使我的函数同步时才起作用的问题,因为在这种情况下,我等到操作完成。我希望它必须在没有'waitForCompletion'调用的情况下工作,但它不是,你能帮我吗?谢谢。

【问题讨论】:

    标签: java multithreading amazon-s3 aws-sdk


    【解决方案1】:

    为什么不能给 transferManager 实例添加监听器

        transferMangerInstance.upload(putObjectRequestInstance);
        transferMangerInstance.addProgressListener(ProgressListener progressListener);
    
        transferMangerInstance.addProgressListener(new ProgressListener() {
                    @Override
                    public void progressChanged(ProgressEvent progressEvent) {
                        if(progressEvent.getEventType() == ProgressEventType.TRANSFER_COMPLETED_EVENT) {
                      //Do your completion logic here
                        }
                    }
                }
    

    【讨论】:

      【解决方案2】:

      waitForCompletion 只会阻塞直到传输完成 (https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/Transfer.html#waitForCompletion--)。

      我怀疑您的传输之前也可以正常工作,但由于它是异步的,您没有检查何时完成。 为了接收异步更新,添加一个 ProgressListener,如下所述: https://docs.aws.amazon.com/AmazonS3/latest/dev/HLTrackProgressMPUJava.html

      【讨论】:

        猜你喜欢
        • 2018-04-25
        • 2019-06-03
        • 2021-02-07
        • 2017-09-17
        • 2015-12-15
        • 2017-10-17
        • 2015-07-23
        • 1970-01-01
        • 2021-12-06
        相关资源
        最近更新 更多