2016-04-15 34 views
0

我试图传递有关演员层次结构的某些信息,以便在他们接收消息时可用。例如,我为每个用户创建一个演员链,并且希望在该演员的所有子项中提供用户信息(名称)。Akka.net在演员层次结构内进行信息

目前我试图访问从层次结构中的任何孩子的用户演员得到的名字,但a)我不知道这是一个很好的做法和b)一个根本不知道我是否当我在层次结构中拥有多个级别并且用户名显然是动态时,可以实现这一点。

所以我已经试过这(假设我要访问的父亲的父亲)

var name = Context.ActorSelection("../..").Path.Name; 

不返回任何有用的东西,似乎不上去两个层次的层次结构。

我认为的另一个选择是创建actor层次结构并使用Props构建下面的所有节点并传递用户名,并且再次传递,我不知道这是否是一个好的做法/正确的做法。因此,例如:

public class MyActor: TypedActor 
{ 
    public MyActor(string id) 
    { 
     _id = id; 
     Context.ActorOf(Props.Create<ChildActor>(_id), "childname"); 
    } 
} 

等等......

回答

3

我不知道你要什么样的问题要解决,但我建议不要对夫妇在userId的演员构造(道具)

在根演员你可以存储一个列表(字典)与用户演员引用和用户ID,然后在儿童演员使用<PRESTART>行动请求用户ID。

protected override void PreStart() 
     { 
      Context.Parent.Tell(new GetUserIdMessage()); 
      base.PreStart(); 
     } 

再加入Receive<UserIdMessage>和存储此字段中的演员 内这将允许写代码,而无需耦合,这额外的几条消息应该不会对系统性能

+0

是有道理的,谢谢你的影响 –