Soy bastante nuevo en Akka y no pude encontrar la respuesta en el manual de referencia.Secuencia de envío de mensajes en akka actors
Supongamos que tenemos agentes remotos distribuidos en el grupo de 3 máquinas (A, B, C), donde un actor vive en cada máquina y otros han actorRef a otros 2, es decir:
Machine A:
A (real actor)
-> B (ref)
-> C (ref)
Machine B:
-> A (ref)
B (real actor)
-> C (ref)
Machine C:
-> A (ref)
-> B (ref)
C (real actor)
Actor A ejecuta código siguiente:
bRef ! msg1
bRef ! msg2
Actor B ejecuta código siguiente en el controlador de mensajes:
case msg1 =>
cRef ! msg3
aRef ! msg4
Actor C ejecuta código siguiente en el controlador de mensajes:
case msg3 =>
aRef ! msg5
¿Puedo hacer las siguientes suposiciones (si lo hay):
el actor B se msg1 antes de que llegue msg2
actor A obtiene msg5 antes de obtener msg4
Y la pregunta de seguimiento que probab conduce a la comprensión de lo anterior: Es mensaje enviado por el! operador a través de la red de manera realmente asíncrona o ¿espera hasta que el buzón receptor lo obtenga? Es decir hace la línea
bRef ! msg1
bloque hasta que el actor B recibe el mensaje en su buzón de correo o se desovar el hilo que se encarga de la entrega y continúe ejecutando
bRef ! msg2
incluso antes de que sabe que el actor B consiguió msg1?
No ha direccionado realmente 1. y 2., aunque podría inferir que 2. no se ajusta a lo que ha mostrado. Esto no aborda 1. incluso tangencialmente, sin embargo. –
Tienes razón. Modifiqué mi respuesta para responder a la pregunta específica que estaba respondiendo. –
¿Estás seguro de que para lograr (2) no tengo que cambiar el código del actor C a aRef !! msg5? – Grozz