¿Es posible enviar un mensaje a todas actores en un sistema de actores? He estado mirando el Enrutador de difusión ejemplo, pero eso es tan marginal que no puedo comprender cómo agrego actores al enrutador dinámicamente.
Estamos usando scala para akka.
¡Gracias!
Respuestas
12 para la respuesta № 1system.actorSelection("/user/*") ! msg
Selecciona a todos los hijos del tutor y les envía el mensaje.
8 para la respuesta № 2
Si desea enviar un mensaje a todos los actores que se crean dinámicamente, puede usar eventBus
Yo personalmente uso el system.eventStream para mi caso.
Desde un actor, puedes enviar a todos:
context.system.eventStream.publish(StatisticsMessage())
o directamente con el sistema.
El actor debe suscribirse con:
context.system.eventStream.subscribe
Me extiendo de:
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()
}
}