1

我有以下要求:我想要一个将消息转发到 0-* 演员(目的地)的路由器或演员。

目的地通过注册和注销消息(如侦听器)在路由器上注册和注销自己。

我的想法是,在“RoutingActor”中有一个 Map,它包含目的地的引用。但是如果我确实以这种方式实现它,我就不能使用“AkkaSystem.actorOf(RoutingActor.class)”,因为我可能会得到不同的演员,对吧?

那么,这里的正确解决方案是什么?我想构建一个路由器/调度程序,它可以在运行时从这些目标 Actor 更改消息目标。

谢谢

4

2 回答 2

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
于 2013-07-11T16:29:22.950 回答
1

使用 actorFor/actorSelection 按路径查找路由器 actor。

使用侦听器帮助您实现路由器参与者功能。

于 2013-07-11T18:11:41.417 回答