5

是否可以向参与者系统中的所有参与者发送消息?我一直在看广播路由器的例子,但那太微不足道了,我无法理解如何动态地将演员添加到路由器。

我们将 scala 用于 akka。

谢谢!

4

2 回答 2

12
system.actorSelection("/user/*") ! msg

选择监护人的所有孩子并向他们发送消息。

于 2013-02-15T10:58:30.963 回答
9

如果要向所有动态创建的actor发送消息,可以使用eventBus

我个人将 system.eventStream 用于我的案例。

从演员,您可以发送给所有人:

context.system.eventStream.publish(StatisticsMessage())

或直接与系统。

演员必须订阅:

context.system.eventStream.subscribe

我从:

trait SubscriberActor extends Actor {

  def subscribedClasses: Seq[Class[_]]

  override def preStart() {
    super.preStart()
    subscribedClasses.foreach(this.context.system.eventStream.subscribe(this.self, _))
  }

  override def postStop() {
    subscribedClasses.foreach(this.context.system.eventStream.unsubscribe(this.self, _))
    super.postStop()
  }
}
于 2013-02-15T10:44:37.853 回答