Java AWS SDK v1 - S3 API - 无法使用 multipart api 并行上传多个文件
Java AWS SDK v1 - S3 API - Not able to upload multiple files parallely using multipart api
我有 5 个文件,每个文件大小为 200 MB。我正在使用 Executor 服务并行上传这些文件,并且
将 TransferManager 与 multipart threashold = 50 MB 一起使用,并通过使用阻塞方法调用 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 控制台中打开存储桶时,那里什么也没有。
任何人都可以建议这里可能发生什么或如何进一步调试它吗?
代码工作正常我正在查看错误的存储桶。
我有 5 个文件,每个文件大小为 200 MB。我正在使用 Executor 服务并行上传这些文件,并且 将 TransferManager 与 multipart threashold = 50 MB 一起使用,并通过使用阻塞方法调用 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 控制台中打开存储桶时,那里什么也没有。
任何人都可以建议这里可能发生什么或如何进一步调试它吗?
代码工作正常我正在查看错误的存储桶。