Akka 2.x需要很多命令才能引用ActorSystem.因此,要创建一个actor的实例,MyActor您可能会说:
val system = ActorSystem()
val myActor = system.actorOf(Props[MyActor])
Run Code Online (Sandbox Code Playgroud)
由于经常需要ActorSystem:许多代码示例省略了代码的创建,并假设读者知道system变量的来源.
如果您的代码在不同的地方生成actor,您可以复制此代码,可能创建其他ActorSystem实例,或者您可以尝试ActorSystem通过引用某些全局或通过传递来共享同一实例ActorSystem.
Akka文档提供了"Actor Systems"标题下的actor系统的一般概述,并且有该类的文档ActorSystem.但这些都没有帮助解释为什么Akka的用户不能仅仅依靠Akka来管理这个问题.
ActorSystem每次共享同一个对象或创建一个新对象有什么含义?
这里的最佳做法是什么?一直四处走动ActorSystem看起来非常严厉.
一些例子给出了ActorSystem一个名字:ActorSystem("MySystem")其他人只是打电话ActorSystem().这会有什么不同,如果你两次使用相同的名称怎么办?
是否akka-testkit要求您ActorSystem与传递给TestKit构造函数的共享共享?
dre*_*xin 49
创建ActorSystem非常昂贵,因此您希望每次需要时都避免创建新的ActorSystem.你的演员也应该在同一个ActorSystem中运行,除非他们有充分的理由不这样做.ActorSystem的名称也是其中运行的actor的路径的一部分.例如,如果您在名为的系统中创建一个actor,MySystem它将具有类似的路径akka://MySystem/user/$a.如果您在actor上下文中,则始终引用ActorSystem.在演员,你可以打电话context.system.我不知道akka-testkit的期望,但你可以看看akka测试.
总而言之,你应该总是使用相同的系统,除非有充分的理由不这样做.
| 归档时间: |
|
| 查看次数: |
13194 次 |
| 最近记录: |