PlayアプリケーションにWebSocketサーバーがあり、これをakka-httpサービスに移動したいとします。私は現在、Acckaには存在しないPlayの一部であるActorFlow.actorRef
を使用しています。PlayからAkkaへのWebSocketの移動HTTP
WebSocketが承認されると、私はRabbitMQキューに登録し、各メッセージをWebSocketに転送します。 WebSocketからメッセージを受け取ると、ローカルで処理し、他の人をRabbitMQ交換に転送します。
akka-httpを使用して同じことを行うにはどうすればよいですか? Sink.actorRef
を使用してシンクを作成し、そこにある受信メッセージを処理できますが、送信元はどうですか?
Source.actorRef
でソースを作成できますが、マテリアライズされたときにメッセージを送信するアクターにどのようにアクセスできますか?私のRabbitMQサブスクリプションのforeach
からメッセージを送信するために使用すべき種類のソースがありますか?
これを取得したら、Flow.fromSinkAndSource
を使用して必要なフローを返すことができるように見えます。
はあなたがこれまで行ってきたので、我々はより多くのコンテキストを取得することができますかを示すことができ、あなたの問題解決を望みますか? この場合、actorRefであるマテリアライズされた値を取得する方法は、[mapMaterialized](http://doc.akka.io/api/akka/current/index.html#akka.stream。あなたが探しているものかもしれない – Qingwei
@ Qingwei私はいくつかの異なる繰り返しを行ってきましたが、これは私が現時点で持っているものです(Playの 'ActorFlow.actorRef'から取得したコードを使用します)。それは、それが開かれるとすぐに接続を閉じます。 https://gist.github.com/danellis/643e858d830dbea58bd84e265fb64110 – Derecho