我有点困惑的是,一旦它在Akka系统中被创建,我应该如何获得对我的Actor的引用。说我有以下内容:
class MyActor(val x: Int) extends Actor {
def receive = {
case Msg => doSth()
}
}
在某个阶段我会创建演员如下:
val actorRef = system.actorOf(Props(new MyActor(2), name = "Some actor")
但是当我需要引用MyActor对象时,我看不出有什么方法可以从actor ref中获取它?
由于 DES
答案 0 :(得分:7)
我正在添加我的评论作为答案,因为它似乎被视为值得投入的答案。
无法直接访问演员是演员系统背后的全部理念。你不应该能够获得底层的actor类实例。 actor ref是actor类实例的轻量级代理。允许人们直接访问actor实例可能导致可变数据问题/并发状态更新问题的路径,这是一条不好的路径。通过强制您通过引用(以及邮箱),状态和数据将始终是安全的,因为一次只处理一条消息。
答案 1 :(得分:2)
我认为cmbaxter有一个很好的答案,但我想让它更清楚一些。由于以下原因,ActorRef是你的朋友:
希望有所帮助。