Это злоупотребление или как-то опасно использовать akka-http таким образом?
На сервере
def source(consumerOffset: UUID) =
readJournal.eventsByTag(“MyTag", consumerOffset).map(_.asJson)
pathPrefix("stream" / Segment.map(UUID.fromString)) { offset =>
pathEndOrSingleSlash {
get {
complete {
HttpResponse(
StatusCodes.OK,
entity = HttpEntity(ContentTypes.`application/json`, source(offset))
)
}
}
}
}
Затем на стороне клиента
Source.single(HttpRequest("http://localhost:9000/stream"))
.mapAsync(1) { r =>
Http().singleRequest(r).map { res =>
res.entity.dataBytes.map(_.parse[Event])
}
}
.flatMapConcat(identity).mapAsync(processEvent)
UPD:
- Гарантировано ли, что отправленные мной куски будут такими же на стороне клиента?
- Можно ли получить ответ, содержащий, возможно, бесконечное количество блоков?
- Каков правильный Content-Type для такого ответа?
UPD 2:
В Akka 2.4.9 добавлена возможность отвечать потоками. И в основном делает то же самое, обеспечивая некоторый синтаксический сахар. См. документы. .
idle connection timeout
- person Denis Mikhaylov   schedule 26.06.2017