ActorSystem的名称服务的目的是什么?

时间:2014-01-24 08:27:06

标签: akka

我刚刚开始使用akka,并且不明白ActorSystem名称的用途。

要在同一个JVM或主机(需要远程访问)中运行多个actor系统,它们无论如何都需要在不同的端口上运行。

akka.tcp://MySystem2@127.0.0.1:22222 /用户/招待员 akka.tcp://MySystem3@127.0.0.1:33333 /用户/招待员

由于端口号是寻址方案的一部分,为什么演员系统名称也在地址中?

1 个答案:

答案 0 :(得分:2)

就akka远程而言,是的,端口将作为差异化因素,但并非所有系统都使用远程处理;这是一个补充。没有启动远程处理的核心actor库需要能够支持一个actor的概念,该actor被部署到相同路径下同一个JVM中的两个独立的actor系统中,并且具有相同的名称,并能够区分它们,这就是演员系统的名字发挥作用。让我们说这个演员做了一些日志记录。如果您在同一个JVM中运行了两个独立的actor系统,那么您如何区分哪个实例(部署到system1的实例或部署到system2的实例)是生成日志消息的实例?通过在完全限定的路径中包含actor系统的名称,您将能够区分哪个是哪个。

这是一个需要名字的简单例子,我相信人们可以与其他人合作。但是从远程角度思考它并不是思考问题的正确方法。正如我前面提到的,Remoting是一个附加组件,它建立在核心库之上。核心库需要这种区分,即使看起来不必要,远程处理也只是继承它。