Akka (java), non blocking broadcast to all children

偶尔善良 提交于 2019-12-01 22:01:38

Your solution is already very close: you need a router, but not one of the special-made pre-fabricated ones. Instead just write an actor which forwards messages to subscribers:

class MyRouter extends UntypedActor {
  final Set<ActorRef> subscribers = new HashSet<ActorRef>();

  @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());
      }
    }
  }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!