Я новичок в Akka и не нашел ответ в справочном руководстве.
Предположим, что у нас есть удаленные участники, распределенные в кластере из 3 машин (A, B, C), где один актер живет на каждой машине, а другие имеют actorRef для 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)
Актер А выполняет следующий код:
bRef ! msg1
bRef ! msg2
Актер B выполняет следующий код в обработчике сообщений:
case msg1 =>
cRef ! msg3
aRef ! msg4
Актер C выполняет следующий код в обработчике сообщений:
case msg3 =>
aRef ! msg5
Могу ли я сделать следующие предположения (если есть):
-
Актер B получает сообщение msg1 перед тем, как он получит msg2
-
Актер А получает сообщение msg5, пока не получит сообщение msg4
И следующий вопрос, который, вероятно, приводит к пониманию вышеизложенного: Сообщение отправлено! оператора через сеть по-настоящему асинхронно или он ждет, пока получающий почтовый ящик не получит его? То есть строка
bRef ! msg1
пока актер B не получит сообщение в своем почтовом ящике или не создаст поток, который обрабатывает доставку, и продолжит выполнение
bRef ! msg2
прежде чем он даже узнает, что актер B получил msg1?