2016-04-15 75 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

是有道理的,謝謝你的影響 –