Последовательность доставки сообщений в акторах akka

Я новичок в Akka и не могу найти ответ в справочном руководстве.

Предположим, у нас есть удаленные акторы, распределенные в кластере из 3 машин (A, B, C), где один актер живет на каждой машине, а у других есть актерRef на 2 других, то есть:

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)

Актер A выполняет следующий код:

bRef ! msg1
bRef ! msg2

Актер B выполняет следующие действия. код вывода в обработчике сообщений:

case msg1 => 
    cRef ! msg3
    aRef ! msg4

Актер C выполняет следующий код в обработчике сообщений:

case msg3 => 
    aRef ! msg5

Могу ли я сделать следующие предположения (если есть):

  1. субъект B получает msg1 до того, как он получит msg2

  2. субъект A получит msg5 прежде, чем он получит msg4

И следующий вопрос, который, вероятно, приведет к пониманию вышесказанного: Сообщение отправлено пользователем! оператор через сеть действительно асинхронно или ждет, пока получатель почтовый ящик его получит? Т.е.блокируется ли строка

bRef ! msg1

, пока субъект B не получит сообщение в свой почтовый ящик, или порождает поток, который обрабатывает доставку и продолжает выполнение

bRef ! msg2

еще до того, как узнает, что субъект B получил сообщение msg1?

15
задан Grozz 1 June 2011 в 13:09
поделиться