Cómo usar un SourceQueue de Akka Streams con PlayFramework
Me gustaría usar un SourceQueue para insertar elementos dinámicamente en una fuente de Akka Stream. El controlador de Play necesita una fuente para poder transmitir un resultado usando elchuncked
método.
Como Play usa su propio Akka Stream Sink debajo del capó, no puedo materializar la cola de la fuente usando un Sink porque la fuente se consumiría antes de que elchunked
método (excepto si uso el siguiente truco).
Puedo hacer que funcione si pre-materializo la cola de origen usando un editor de secuencias reactivas, pero es una especie de 'truco sucio':
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))
}
¿Hay una manera más simple de usar Akka Streams SourceQueue con PlayFramework?
Gracias