我正在使用Akka Actors,我正在尝试更新我的代码以使用最新的2.0里程碑.API有所改变,例如Actors的创建现在可以通过一个名为an的东西来工作ActorSystem.
开始和停止演员也改变了 - 后者可以通过ActorSystems方法.stop(..)和.shutdown().但我可以为我的生活找不到如何启动它们......文档很好,但似乎缺少一些重要的观点.我觉得有点愚蠢,但你如何在Akka 2.0环境中开始演员?如果我理解正确的话,那么拥有'父母'的演员会在这个父母开始的时候开始 - 那么顶级演员呢?
Jos*_*cus 26
在阿卡2.0,没有必要为一个start()方法,因为演员是只要你实例化他们的背景下开始ActorSystem(或其他Actor) -但你需要与所提供的方法之一来实例化它们ActorSystem或Actor的context.
因此,例如,如果您有一个Actor被调用的子类MyClass,您可以使用以下命令启动它:
val system = ActorSystem()
val myActor = system.actorOf(Props[MyActor])
Run Code Online (Sandbox Code Playgroud)
或者,如果你的actor采用了构造函数参数:
val myActor = system.actorOf(Props(new MyActor("arg1"))
Run Code Online (Sandbox Code Playgroud)
或者,如果你在另一位演员的身体里,
val myActor = context.actorOf(Props(new Actor("arg1"))
Run Code Online (Sandbox Code Playgroud)
然后你的演员可以立即收到消息,例如
myActor ! MyMessage
Run Code Online (Sandbox Code Playgroud)
甚至您的顶级演员也会立即启动,因为2.0中的所有演员都自动处于监督层级中.一旦actor被实例化ActorSystem,它就准备好接收消息了.