我有 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 控制台中打开存储桶时,什么都没有。
谁能建议这里可能发生的事情或如何进一步调试它?