2013-07-11 64 views
1

我有以下要求: 我想有一個路由器或演員轉發消息到0- *演員(目的地)。阿卡註冊基礎路由

目的地通過註冊和註銷消息(如聽衆)在路由器註冊和取消註冊。

我的想法是,在「RoutingActor」中擁有一個Map,它包含目標的引用。但是如果我這樣實現它,我不能使用「AkkaSystem.actorOf(RoutingActor.class)」,因爲我可能會得到不同的演員,對吧?

那麼,這裏有什麼正確的解決方案?我想構建一個路由器/調度器,它可以在運行時從這些目標Actor中更改消息目標。

感謝

+0

感謝您的回答,我現在要使用Eventbus機制。這似乎是我需求的正確模式。 – Soccertrash

回答

1

創建路由演員的單個實例第一,給它一個名稱,以便它可以再次擡頭後來在別處。再後來和其他地方,使用actorFor代替actorOf

val router = system.actorOf(Props[RoutingActor], "myrouter") 

然後在別處:

val router = system.actorFor("/user/myrouter") 
router ! msg 

或者,如果您使用的是阿卡2.2:

val router = system.actorSelection("/user/myrouter") 
router ! msg 
1

使用actorFor/actorSelection找到通過路徑的路由器actor。

使用Listeners來幫助您實現路由器參與者功能。