从S3下载文件时引发Akka流异常

时间:2020-04-08 02:12:58

标签: scala playframework akka

我正在尝试使用以下代码从S3下载文件:

     wsClient
      .url(url)
      .withMethod("GET")
      .withHttpHeaders(my_headers: _*)
      .withRequestTimeout(timeout)
      .stream()
          .map {             
            case AhcWSResponse(underlying) =>
                  underlying.bodyAsBytes
              }

运行此命令时,出现以下异常:

    akka.stream.StreamLimitReachedException: limit of 13 reached

这是因为我正在使用bodyAsBytes吗?这个错误是什么意思 ?我还看到了可能与以下警告消息有关的信息:

 blockingToByteString is a blocking and unsafe operation!

1 个答案:

答案 0 :(得分:0)

由于进入的元素数大于最大值,所以您得到StreamLimitReachedExpcetion。

val MAX_ALLOWED_SIZE = 100

// OK. Future will fail with a `StreamLimitReachedException`
// if the number of incoming elements is larger than max
val limited: Future[Seq[String]] =
  mySource.limit(MAX_ALLOWED_SIZE).runWith(Sink.seq)

// OK. Collect up until max-th elements only, then cancel upstream
val ignoreOverflow: Future[Seq[String]] =
  mySource.take(MAX_ALLOWED_SIZE).runWith(Sink.seq)

您可以找到有关流式处理here

的更多信息