我的应用程序需要能够创建角色的树结构。我想象的标准方法是将实例化代码放入参与者中,以便他们可以实例化他们的孩子。我宁愿的做法是能够在给定路径上实例化一个actor。比如在mySystem中创建actor A,然后能够直接创建akka:// mySystem/A/B和其他actor。这种功能是否存在?它会大大简化我的代码。在akka中手动创建角色层次结构
编辑:现在,我不在我的手机上,让我详细说明。
说我有一个类
class myActor extends actor
,我需要做的这些n路树。而不必用什么实例自己的孩子在接收功能类似
case Create(n:Int) => {}
我希望通过不包括任何的,为了简化myActor代码所需的代码,而是能够在开始创建我的层次我的代码手动。因此,理想的是这样的(假设假设静态功能 “创建”):
val sys = ActorSystem("mySystem")
Akka.Actors.Create("akka://mySystem/a", new myActor())
Akka.Actors.Create("akka://mySystem/a/b", new myActor())
Akka.Actors.Create("akka://mySystem/a/c", new myActor())
这将创建actor树:
a
/\
b c
现在,这是否存在?有没有更好的方式来做到这一点,而不用实例化代码混淆我的actor代码?
编辑,第2轮:
好吧,看起来像这个功能不存在。我创建了一个actor的子特性,并强制所有实例化代码放在那里,这样我的具体实现类仍然很整洁。
我从理论上可以看出这是一个很好的答案,但是我不禁注意到,大型演员系统层次结构产生了多少意大利面代码。问题中提到的中心配置可能为实际软件目的提供清晰理解总体层次结构的机制。你会推荐一些替代方法来阐明复杂的层次结构吗?或者这是如何得到父母与孩子的演员关系? –
我很难回答这个问题,因为你似乎暗示了我没有的背景。 Actor系统在提供某些功能的子树中构建,从这个意义上说,它们是非常模块化的。每个这些子模块的入口点都是它的顶级角色,它实际上是其整个子树。我可以看到如何通过尝试在外部子树中安装actor来生成意大利面代码,因为这根本不是意味着要完成的。每当演员需要创建一个孩子时,例如,可以查看配置以确定如何执行此操作。 –