Я пытаюсь прочитать большой кусок данных через scala, как описано здесь: Scala чтение непрерывного потока http
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{Uri, HttpRequest}
import akka.stream.ActorMaterializer
object ChunkTestClient extends App {
implicit val system = ActorSystem("test")
import system.dispatcher
implicit val materializer = ActorMaterializer()
val source = Uri("https://jigsaw.w3.org/HTTP/ChunkedScript")
val finished = Http().singleRequest(HttpRequest(uri = source)).flatMap { response =>
response.entity.dataBytes.runForeach { chunk =>
println(chunk.utf8String)
}
}
}
Приведенный выше фрагмент кода отлично работает для большинства случая. Но в случае, если данные ответа огромны, или источник непрерывно передает большой набор данных, тогда ответ фрагмента не работает, не выдает никаких ошибок, он просто тихо убивает. Похоже, это случай обратного давления, когда скорость производства данных больше, чем скорость потребления. Есть ли способ обрабатывать большие размеры \ потоковую передачу данных с помощью akka http streaming. Что можно сделать в приведенном выше коде, чтобы справиться с обратным давлением на стороне клиента.