我正在做这样的事情:
...lots of surrounding context...
val actor = context.actorOf(Props(new Actor(...))
(actor ? message) onComplete {
case Done => {
println("done")
Do stuff with the surrounding context of this actor
}
case _ => {
println("got wildcard") // try to handle error message here
}
}
Actor
在使用
akka.actor.ActorInitializationException
(在演员的背景下)
在父母演员中我得到**dead letters encountered.**
由于actor
从未正确创建,"message"
无法投放。
在这种情况下,"ask?"
模式永远不会正常返回。
我可以在父级全局级别创建SupervisorStrategy
,但我需要了解生成异常的actor的上下文,并且不可能(或方便)在全局级别处理它
有没有办法在"ask"
上下文actor ? message
中“捕获”初始化异常?
答案 0 :(得分:0)
根据akka哲学ask
只有在你从演员系统外部与演员互动时才应该使用。
由于你有context
的引用似乎你在演员代码中。所以你应该试着摆脱ask
。
如果我错了并且您从非akka代码中调用ask
,那么您不应该尝试依赖于actor系统内发生的任何事情。你所拥有的只是一个ActorRef
而没有保证,这个参考的另一面是什么。