繁体   English   中英

S3多线程下载库

[英]S3 multithreaded download library

我有一个Java应用程序,需要从Amazon S3快速可靠地下载。 理想情况下,我会使用AWS开发工具包的TransferManager( http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/transfer/TransferManager.html )之类的东西,希望以流方式处理数据,而不必将所有下载的数据暂存到本地磁盘上。

理想情况下,该库将具有类似于AmazonS3#getObject()的接口,但是实现会更快,更健壮。 更好的是,该库将支持对多个S3对象的预取:我可以为它提供一个最终要下载的对象列表,然后为每个对象快速消耗一系列流。 如果库必须使用大量RAM来进行预取是可以的。

有人知道具有某些/所有这些功能的图书馆吗?

我建议使用minio-java

适用于Amazon S3的云存储的Java库

io.minio.MinioClient.getObject返回InputStream [示例] ,您可以执行多个getObject ,其中每个调用都返回单独的InputStream

MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
InputStream stream1 = s3Client.getObject("my-bucketname", "my-objectname1");
InputStream stream2 = s3Client.getObject("my-bucketname", "my-objectname2");

在此,不预提取流。 如果很难进行预取,则可以使用getObject的另一个变体

公共无效的getObject(字符串bucketName,字符串objectName,字符串fileName)

使用此方法的好处是,它可以恢复先前的getObject(如果有)。

MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");
s3Client.getObject("my-bucketname", "my-objectname1", "/mycachedir/my-objectname1");
s3Client.getObject("my-bucketname", "my-objectname2", "/mycachedir/my-objectname2");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM