Estoy aprendiendo Akka y estoy tratando de averiguar cómo conseguir que los actores hablen entre sí (llamémoslos A
y B
). No es un escenario de solicitud/respuesta, A
y B
se envían mensajes entre sí en cualquier momento.Akka actorPara vs pasando un ActorRef
Por el momento tengo dos actores hermanos que transmiten mensajes en ambas direcciones el uno al otro. Ambos se crean directamente en el ActorSystem
. Inicialmente pasé el ActorRef
de A
en el constructor de B
. Pero no puedo pasar el ActorRef
de B
al constructor de A
porque aún no existe, es decir, no puedo usar este método para las referencias circulares.
He estado leyendo acerca de actorFor
y esto me permitiría buscar un actor usando su ruta. Sin embargo, no me siento cómodo con esta configuración, porque si la ruta cambia, no será capturada por el compilador.
Otra alternativa, teniendo en cuenta cada actor tiene acceso a la misma de los padres, es para pasar los mensajes de A
y B
al padre y luego tener la matriz pasar el mensaje de vuelta a A
y B
. Pero esto une al padre con los tipos de mensajes que se transmiten de un lado a otro.
¿Qué estrategias utilizan las personas para hacer que los actores se conozcan entre sí? ¿Estoy siendo muy cauteloso al buscar actores por el camino?
¿Ha intentado utilizar 'lazy val's al crear instancias de sus' ActorRef's? Me imagino que esto ayudaría a resolver la dependencia circular. Asumiendo que usas Scala, por supuesto ... – agilesteel
Acabo de darle una oportunidad y funciona. No sabía que hace referencia a un vago val antes de que se defina - ¡cosas locas! Gracias por el consejo. Todavía estaré interesado en saber cómo se siente la gente acerca de pasar ActorRefs vs paths. – Geoff
Asegúrate de haber leído http://doc.akka.io/docs/akka/2.0.2/general/addressing.html. – sourcedelica