私は 3 つのアクターの階層を持っています:
SM -> R -> W
SM - サービス マネージャー R - ルーター W - ワーカー
SM は、リモート ノードに展開されるアクター W を作成した R アクターを作成します。
外部サービスから情報を収集するため、Actor W の作成には時間がかかるため、数秒の遅延は正常です。したがって、preStart()
W から SM に、init が完了し、完全に機能するというメッセージを送信したいと考えています。
この方法で W から SM アクターに到達しようとしました。
val myCreatorServiceManagerActorPath = self.path.parent.parent
context.actorSelection(myCreatorServiceManagerActorPath) ! RegisteredServiceWorker(serviceName)
これらのメッセージはすべて、deadLetter の受信トレイに送られます。間違っている場合は訂正してください。ただし、ローカリゼーションは透過的であるべきではありませんか? SM男優への正しい連絡方法は?
ここで役立つ場合は、dead-letter-log です
monitor [INFO] [03/28/2014 11:34:49.253] [application-akka.actor.default-dispatcher-18] [akka://application/remote/akka.tcp/application@127.0.0.1:2558/user/ServiceManager] Message [pl.mlife.mcloud.runner.common.ServiceRuntimeActor$RegisteredServiceWorker] from Actor[akka://application/remote/akka.tcp/application@127.0.0.1:2558/user/ServiceManager/sample/c3#-1356554194] to Actor[akka://application/remote/akka.tcp/application@127.0.0.1:2558/user/ServiceManager] was not delivered. [3] dead letters encountered. This logging can be turned off or adjusted with configuration settings 'akka.log-dead-letters' and 'akka.log-dead-letters-during-shutdown'.