【发布时间】:2016-03-13 09:17:51
【问题描述】:
我有一个 Actor,它充当主管,但还需要向调用者“返回”数据,这是否是一个 Actor 无关紧要。
我在问我的主管,我们称他为 SV。
SV 处理我发送给他的消息,并返回一个响应。
val system = ActorSystem("ActorSystem")
val sv = system.actorOf(Props[SV], name = "SV")
sv ? msg
而SV的recieve方法是这样的:
def receive = {
case msg => (someChild ? msg).pipeTo(sender)
...
}
这一切都很好。 问题是当孩子抛出异常时,这个异常会被主管策略捕获。
override def supervisorStrategy = OneForOneStrategy () {
case e : Throwable => {
val newResponse = someNewResponse
sender ! newResponse
...
}
}
sender 不再是指最初调用 SV 的人,而且我似乎无法弄清楚如何将消息发送回被询问者,并回到我原来的流程。
【问题讨论】:
标签: scala akka akka-supervision