我对 Akka 很陌生,在参考手册中找不到答案。
假设我们有远程参与者分布在 3 台机器(A、B、C)的集群中,其中每台机器上都有一个参与者,而其他参与者则拥有另外 2 台参与者的 actorRef,即:
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
Actor B 在消息处理程序中执行以下代码:
case msg1 =>
cRef ! msg3
aRef ! msg4
Actor C 在消息处理程序中执行以下代码:
case msg3 =>
aRef ! msg5
我可以做出以下假设(如果有的话):
演员 B 在得到 msg2 之前得到 msg1
演员 A 在得到 msg4 之前得到 msg5
以及可能导致理解上述内容的后续问题:消息是由!运营商通过网络真正异步还是等到接收邮箱得到它?即行
bRef ! msg1
阻塞,直到演员 B 在其邮箱中收到消息,或者它是否产生处理传递并继续执行的线程
bRef ! msg2
甚至在它知道演员 B 得到 msg1 之前?