Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用Alpakka S3连接器的多个下载请求_Scala_Amazon S3_Akka_Akka Stream_Alpakka - Fatal编程技术网

Scala 使用Alpakka S3连接器的多个下载请求

Scala 使用Alpakka S3连接器的多个下载请求,scala,amazon-s3,akka,akka-stream,alpakka,Scala,Amazon S3,Akka,Akka Stream,Alpakka,我正在尝试使用来执行以下操作: 从AWS S3下载大量文件 通过Alpakka流式传输下载的文件 将压缩流上载回S3接收器 我使用的代码如下所示: val s3Sink: Sink[ByteString, Future[MultipartUploadResult]] = S3.multipartUpload("my-s3-bucket", "archive.zip") val sourceList = (1 to 10).map(i => S3.download("my-s3-buc

我正在尝试使用来执行以下操作:

  • 从AWS S3下载大量文件
  • 通过Alpakka流式传输下载的文件
  • 将压缩流上载回S3接收器
我使用的代码如下所示:

val s3Sink: Sink[ByteString, Future[MultipartUploadResult]] = S3.multipartUpload("my-s3-bucket", "archive.zip")

val sourceList = (1 to 10).map(i => S3.download("my-s3-bucket", s"random$i.png").map {
    case Some((s, m)) => (ArchiveMetadata(s"${UUID.randomUUID()}.png"), s)
})
val source = Source.combine(sourceList.head, sourceList.tail.head, sourceList.tail.tail: _*)(Merge(_))

source
    .via(Archive.zip())
    .to(s3Sink)
    .run()
但是,这会导致以下错误:

Response entity was not subscribed after 1 second. Make sure to read the response entity body or call `discardBytes()` on it.
我怀疑这是因为S3连接器在移动到下一个连接器之前使用了底层Akka Http,但我无法在不引入等待/延迟的情况下以合理的方式处理此问题。 我尝试使用
bufferSize=1
的队列,但也不起作用


我对Akka和Akka Streams相当陌生。

我们正在研究这个问题。我会提供一个明确的答案。这可能是由于元素的内部缓冲以及有限的连接池大小。您在后台使用同一个池进行上传和下载,因此在发生争用的情况下,下载可能会在您有能力再次上传之前开始。最终,我使用了来自普通AWS SDK GetObjectRequest的InputStream,直到我找到一种使用Alpakka/Akka Http的方法