#akka-stream #akka-http
Вопрос:
Есть маршрут, который проходит примерно так:
val route =
path("data") {
get {
val src: Source[ByteString, BoundedSourceQueue[ByteString]] = ???
complete(HttpEntity(ContentTypes.`application/octet-stream`, src))
}
}
Как я могу получить доступ к материализованной ценности этого источника?
Комментарии:
1. Чтобы получить материализованное значение, вам нужно будет загрузить все в память, что звучит опасно из-за потенциального ООМ. Какую проблему вы хотели бы решить?
2. Что? Материализованное значение становится доступным, как только запускается график.
Ответ №1:
Преждевременная src
материализация должна сделать свое дело.
// will need an implicit ActorSystem/ActorMaterializer in scope
val baseSrc: Source[ByteString, BoundedSourceQueue[ByteString]] = ???
val (bsq, src) = baseSrc.preMaterialize()
// do stuff with bsq...
complete(HttpEntity(ContentTypes.`application/octet-stream`, src))