【发布时间】:2011-09-06 07:08:30
【问题描述】:
我对 Akka 很陌生,在参考手册中找不到答案。
假设我们有远程 Actor 分布在 3 台机器(A、B、C)的集群中,其中每台机器上都有一个 Actor,其他的 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)
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
以及可能导致理解上述内容的后续问题: 是由 ! 发送的消息吗?运营商通过网络真正异步还是等到接收邮箱得到它? IE。行吗
bRef ! msg1
阻塞直到actor B在其邮箱中收到消息,或者它是否产生处理传递的线程并继续执行
bRef ! msg2
在它知道演员 B 得到 msg1 之前?
【问题讨论】:
标签: scala messages actor akka mq