名称无效的Akka演员选择

时间:2018-05-15 17:50:31

标签: akka

我正在阅读Actor Selection上的Akka文档,并尝试了解其工作原理。具体来说,我正在努力理解 命名约定Akka用于根据特定actor在actor“tree”中的位置及其名称设置路径。

我的理解

  • 所有演员都在名为/user/
  • 的“根”路径下可用
  • 在创作时(通过actorSystem.actorOf(Props[ActorClassImpl], name = "SomeName")),所有演员都会获得name
  • 演员的“路径”是/user/前缀加上层次路径(见下文)加上name
  • “层次结构路径”只是/user/与演员之间所有父母的斜线分隔连接

因此,如果名为fizz的actor是根级actor,并且它有一个名为buzz的子级,并且该子级本身有一个名为{child}的子级 foo,那么foo的路径是/user/fizz/buzz/foo,是吗?

首先,如果我对这个基本路径构造的工作方式的理解不正确,请首先纠正我!假设 我或多或少是正确的,演员是否有任何“无效”名称,例如名字中有空格或标点符号的演员?

1 个答案:

答案 0 :(得分:2)

  
      
  • 所有演员都可以在" root"路径名为/user/
  •   

所有用户创建的演员都位于"/user/"监护人演员的下方。 "/"的演员是根守护者。根据{{​​3}}所述,在根守护者下面还有其他演员。

  
      
  • 在创作时(通过actorSystem.actorOf(Props[ActorClassImpl], name = "SomeName"))所有演员都有一个名字
  •   

在此示例中,创建了一个名为ActorClassImpl的顶级"SomeName" actor。

  
      
  • 演员的"路径" /user/前缀加上等级路径(见下文)加上{{1} }}
  •   
  • "等级路径"只是name和演员之间所有父母的斜线划分连接
  •   
     

因此,如果名为fizz的actor是根级actor,并且它有一个名为buzz的子级,并且该子级本身有一个名为foo的子级,则foo的路径为/ user / fizz / buzz / foo,是吗?

对于用户创建的演员,这部分是正确的。 here还包括一个锚点。例如:

/user/
  

......有没有"无效"演员的名字,例如名字中有空格或标点符号的演员?

来自actor path

  

name参数是可选的,但您最好为演员命名,因为它用于日志消息和识别演员。该名称不能为空或以"akka://MyActorSystem/user/fizz/buzz/foo" // local "akka.tcp://MyActorSystem@somehost.com:1234/user/fizz/buzz/foo // remote 开头,但它可能包含URL编码字符(例如,$表示空格)。如果给定名称已被另一个孩子用于同一父级,则会抛出%20