如何从2.0开始Akka Actors?

时间:2011-12-29 09:04:31

标签: scala actor akka

我正在使用 Akka Actors ,我正在尝试更新我的代码以使用最新的2.0里程碑。 API有所改变,例如Actors的创建现在可以通过名为ActorSystem的东西来实现。

开始和停止演员也改变了 - 后者可以通过ActorSystems方法.stop(..).shutdown()获得。但我可以为我的生活找不到如何启动它们...... 文档很好,但似乎缺少一些重要的观点。我觉得有点愚蠢,但你如何在Akka 2.0环境中开始演员?如果我理解正确的话,那么拥有'父母'的演员会在这个父母开始的时候开始 - 那么顶级演员呢?

1 个答案:

答案 0 :(得分:26)

在Akka 2.0中,不需要start()方法,因为Actors在ActorSystem(或其他Actor)的上下文中实例化时会立即启动 - 但是你需要使用ActorSystemActor context提供的方法之一来实例化它们。

因此,例如,如果您有一个名为Actor的{​​{1}}子类,则可以使用以下命令启动它:

MyClass

或者,如果你的actor接受了构造函数参数:

val system = ActorSystem()
val myActor = system.actorOf(Props[MyActor])

或者,如果你身处其他演员的身体,

val myActor = system.actorOf(Props(new MyActor("arg1"))

然后你的演员可以立即收到消息,例如

val myActor = context.actorOf(Props(new Actor("arg1"))

即使您的顶级演员也会立即开始,因为2.0中的所有演员都自动处于监督层级中。只要演员使用myActor ! MyMessage 进行实例化,它就可以接收消息了。