Akka(java),非阻止广播给所有孩子

假设我有一个地区演员,每个地区都有一定数量的人。 你如何向每个人广播一条消息,知道人们的名单可以随着时间的推移而改变,广播路由器似乎是选择,但问题是他们有最大数量的路由,而且我不能动态地追加人们路由器。

我的问题是:我知道有一个EventBus,我可以订阅我的人员参加活动巴士,但我不希望他们收到所发布的每条消息,我希望他们收到该地区的消息。

现在在akka,我们必须创建一个具有一定数量路由的路由器,例如:

Router router = new router(person1, person2) 

这很糟糕,因为在该地区没有人,我不知道将加入我所在地区的人。

有没有办法制作一种动态路由器:例如:

 Region region = new region() region.router = new Router() Person person1 = new Person() region.router.subscribe(person1); region.router.tell("hello",null); 

您的解决方案已经非常接近:您需要一台路由器,而不是一台特制的预制路由器。 相反,只需编写一个向订阅者转发消息的actor:

 class MyRouter extends UntypedActor { final Set subscribers = new HashSet(); @Override public void onReceive(Object msg) { if (msg instanceof Subscribe) { subscribers.add(getSender()); } else if (msg instanceof Unsubscribe) { subscribers.remove(getSender()); } else { for (ActorRef target: subscribers) { target.tell(msg, getSender()); } } } }