私は Akka にかなり慣れていないので、リファレンス マニュアルで答えを見つけることができませんでした。
3 台のマシン (A、B、C) のクラスターにリモート アクターが分散しているとします。この場合、各マシンには 1 つのアクターが存在し、他の 2 つのアクターには他の 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
アクター B は、メッセージ ハンドラーで次のコードを実行します。
case msg1 =>
cRef ! msg3
aRef ! msg4
アクター C は、メッセージ ハンドラーで次のコードを実行します。
case msg3 =>
aRef ! msg5
次の仮定を立てることができますか (もしあれば):
アクター B は、msg2 を取得する前に msg1 を取得します
アクター A は msg4 を取得する前に msg5 を取得します
そして、おそらく上記の理解につながるフォローアップの質問: Is message sent by the ! オペレーターはネットワークを介して真に非同期に処理するのか、それとも受信メールボックスがそれを取得するまで待機するのか? つまり、行を行います
bRef ! msg1
アクター B がメールボックスにメッセージを取得するまでブロックするか、配信を処理して実行を続けるスレッドを生成するか
bRef ! msg2
アクター B が msg1 を受け取ったことを知る前に?