阿卡:管道自己和父母

时间:2016-08-30 10:23:35

标签: scala akka

在我的演员中,我有这一系列的消息:

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)吗?

1 个答案:

答案 0 :(得分:4)

不要将发件人保留在变量中。如果在第一个呼叫者完成之前有多个来自不同呼叫者的消息怎么办?只有最后一个才能正确路由。试试这个:

override def receive: Receive = {
  case msg @ Message => 
      HttpRequest.singleRequest(...).map(SomethingElse(_)) pipeTo sender
}