Wie verwende ich eine Akka Streams SourceQueue mit PlayFramework?

Ich möchte eine SourceQueue verwenden, um Elemente dynamisch in eine Akka Stream-Quelle zu verschieben. Der Play Controller benötigt eine Quelle, um ein Ergebnis über das @ -Zeichen streamen zu könnechuncked Methode
As Play verwendet einen eigenen Akka Stream Sink unter der Haube. Ich kann die Quellwarteschlange nicht selbst mit einem Sink materialisieren, da die Quelle verbraucht würde, bevor sie vom @ verwendet wirchunked -Methode (außer wenn ich den folgenden Hack verwende).

Ich kann es zum Laufen bringen, wenn ich die Quellwarteschlange mit einem Publisher für reaktive Streams vorab materialisiere, aber es ist eine Art schmutziger Hack:

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))
  }

Gibt es eine einfachere Möglichkeit, eine Akka Streams SourceQueue mit PlayFramework zu verwenden?

Vielen Dan

Antworten auf die Frage(4)

Ihre Antwort auf die Frage