我有以下要求: 我希望有一个路由器或演员将消息转发给0- *演员(目的地)。
目的地通过注册和注销消息(如听众)在路由器上注册和注销自己。
我的想法是,在“RoutingActor”中有一个Map,它包含目的地的引用。但是如果我以这种方式实现它,我就不能使用“AkkaSystem.actorOf(RoutingActor.class)”,因为我可能会得到不同的演员,对吗?
那么,这里的正确解决方案是什么?我想构建一个路由器/调度程序,它可以在运行时从这些目标Actors更改消息目标。
由于
答案 0 :(得分:1)
首先创建路由actor的单个实例,为其指定一个名称,以便以后可以在其他地方再次查找。然后在其他地方使用actorFor
代替actorOf
:
val router = system.actorOf(Props[RoutingActor], "myrouter")
然后在其他地方:
val router = system.actorFor("/user/myrouter")
router ! msg
或者如果您使用的是Akka 2.2:
val router = system.actorSelection("/user/myrouter")
router ! msg
答案 1 :(得分:1)
使用actorFor / actorSelection按路径查找路由器actor。
使用Listeners来帮助您实现路由器角色功能。