我尝试使用transferManager.downloadDirectory()从S3下载一个目录。在这个目录中,我有大约9000个小文件。
我设置了50个固定线程池,但我没有感觉到性能发生了变化。我想它只适用于MultiPart文件下载。
是否有一种简单的方法可以并行下载目录?
TransferManagerBuilder transferManagerBuilder = TransferManagerBuilder.standard();
transferManagerBuilder.setS3Client(s3client);
transferManagerBuilder.setExecutorFactory(() -> Executors.newFixedThreadPool(50));
TransferManager transferManager = transferManagerBuilder.build();
File tempDir = tempDirPath.toFile();
MultipleFileDownload download = transferManager.downloadDirectory("REGRESSION_TEST", fromPath, tempDir);
try {
download.waitForCompletion();
} catch (AmazonClientException | InterruptedException e) {
logger.debug("failed to download S3 files", e);
return null;
}
最诚挚的问候,
张爱玲答案 0 :(得分:0)
我的猜测是只有一个线程在运行。 您需要列出所有密钥,然后使用 Download (而不是DownloadDirectory)下载它们。