首页 > 解决方案 > 使用 Alpakka 库从 s3 下载文件中的问题在 play java 项目中

问题描述

我已经使用 alpakka 成功将 csv 文件上传到 s3,现在我也尝试使用 alpakka 下载该文件。但无法完全下载该 csv 文件,有时它返回 10 行,有时返回 5 行,有时返回 50 行15413. 看起来它没有等待所有记录

final Source<Optional<Pair<Source<ByteString, NotUsed>, ObjectMetadata>>, NotUsed>
    sourceAndMeta = S3.download(bucket(), bucketKey());
final Pair<Source<ByteString, NotUsed>, ObjectMetadata> dataAndMetadata =
    sourceAndMeta
        .runWith(Sink.head(), system)
        .toCompletableFuture()
        .get(5, TimeUnit.SECONDS)
        .get();

final Source<ByteString, NotUsed> data = dataAndMetadata.first();
final ObjectMetadata metadata = dataAndMetadata.second();

final CompletionStage<String> resultCompletionStage =
    data.map(ByteString::utf8String).runWith(Sink.head(), system);

String result = resultCompletionStage.toCompletableFuture().get(5, TimeUnit.SECONDS);

标签: javaplaybackalpakka

解决方案


推荐阅读