Java AWS SDK v1-S3 API-无法使用分段API并行上传多个文件

问题描述

我有5个文件,每个文件大小为200 MB。我正在使用Executor服务并行上传这些文件,并且 使用具有多部分阈值= 50 MB的TransferManager并通过使用对upload.waitForCompletion()的阻塞方法调用来等待上载完成(表示当前线程挂起,直到 上传成功或抛出错误)。

请找到以下代码摘录:

private static final ExecutorService executor = Executors.newFixedThreadPool(10);

executor.execute(() -> upload("bucketName",new File(fullFilePath)));


public static void upload(final String bucketName,final File filePath) {
        
        AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withCredentials(new AWsstaticCredentialsProvider(getCredentals()))
                .withRegion(Regions.DEFAULT_REGION).build();

        TransferManager tm = TransferManagerBuilder.standard().withS3Client(amazonS3)
                .withMultipartUploadThreshold((long) (50 * 1024 * 1025)).build();
        
        final String fileName = filePath.getName();
        try {
            Upload upload = tm.upload(s3Bucket,fileName,filePath);
            upload.waitForCompletion();
            log.info("Successfully uploaded file = " + fileName);
            
        } catch (Exception e) {
            log.info("Upload Failed for file = " + fileName);
            log.error(e);
        }
    }

直到所有5个文件的“成功上传”都没有退出主线程。 现在,该程序不会引发任何错误,并且可以成功显示所有5个文件,但是当我在aws控制台中打开存储桶时,什么也没有。

任何人都可以建议这里发生了什么或如何对其进行进一步调试吗?

解决方法

代码运行正常,我正在寻找错误的存储桶。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...