在我的演员中,我有这一系列的消息:
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 :(得分:4)
不要将发件人保留在变量中。如果在第一个呼叫者完成之前有多个来自不同呼叫者的消息怎么办?只有最后一个才能正确路由。试试这个:
override def receive: Receive = {
case msg @ Message =>
HttpRequest.singleRequest(...).map(SomethingElse(_)) pipeTo sender
}