Como usar um SourceQueue do Akka Streams com o PlayFramework
Eu gostaria de usar um SourceQueue para enviar elementos dinamicamente para uma fonte do Akka Stream. O controlador Play precisa de uma fonte para transmitir um resultado usando ochuncked
método.
Como o Play usa seu próprio Akka Stream Sink sob o capô, não consigo materializar a fila de origem usando um Sink, porque a fonte seria consumida antes de ser usada pelochunked
método (exceto se eu usar o seguinte hack).
Sou capaz de fazê-lo funcionar se pré-materializar a fila de origem usando um editor de fluxos reativos, mas é uma espécie de 'invasão suja':
def sourceQueueAction = Action{
val (queue, pub) = Source.queue[String](10, OverflowStrategy.fail).toMat(Sink.asPublisher(false))(Keep.both).run()
//stupid example to push elements dynamically
val tick = Source.tick(0 second, 1 second, "tick")
tick.runForeach(t => queue.offer(t))
Ok.chunked(Source.fromPublisher(pub))
}
Existe uma maneira mais simples de usar um SourceQueue do Akka Streams com o PlayFramework?
obrigado