2016-08-30 3 views
0

アッカ:私はこのメッセージのシーケンスを持っている私の俳優でpipetoの自己と親

var sndr: ActorRef = _ 

override def receive: Receive = { 
     case msg @ Message => 
      sndr = sender 
      HttpRequest.singleRequest(...) pipeTo self 

     case smt @ HttpResponse(StatusCodes.OK, _, entity1, _) => sndr ! SomethingElse(smt) 

} 

私は変数の元の「差出人」を保存しています。これは、元の送信者に最終メッセージを送信する最善の方法ですか(Somethingメッセージの場合はselfとなります)。

+0

すべての読者に:「forward」は、元の送信者が 'pipeTo'ステップですでに失われているため、' forward'という言葉は間違っています。 –

+0

これは公式の文書です:http://doc.akka.io/docs/akka/2.4/scala/http/client-side/request-level.htmlそして 'pipeTo'それは' Future'それ自体です。しかし、それは自分自身で定義された先物インサイダーの俳優を使って悪い習慣とみなされます。それは一種のcatchです22 – Randomize

答えて

4

送信者を変数に入れないでください。最初のメッセージが完了する前に、異なる発信者からのメッセージが複数ある場合はどうなりますか?最後のものだけが正しくルーティングされます。これを試してみてください:

関連する問題