2013-07-11 61 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来帮助您实现路由器参与者功能。