/ / Enviar un mensaje a todos los actores dentro de un ActorSystem - scala, akka

Enviar un mensaje a todos los actores dentro de un ActorSystem - scala, akka

¿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 № 1
system.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()
}
}