-1

我有 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 控制台中打开存储桶时,什么都没有。

谁能建议这里可能发生的事情或如何进一步调试它?

4

1 回答 1

-1

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

于 2020-09-06T02:52:41.203 回答