子アクターから親にメッセージを送信できません。 私は、Java 8 &アッカ2.5.1Akkaの親はその子からメッセージを受け取っていません
マスター親がIMPLクラスで作成されて使用しています:
public Receive createReceive() {
return receiveBuilder()
.match(Object_B_Message.class, message -> {
ActorRef objectB= context().actorOf(Props.create(ObjectB.class));
objectB.tell(message, this.getSelf());
})
.match(Object_C_message.class, message -> {
ActorRef objectC = context().actorOf(Props.create(ObjectC.class));
objectC.tell(message, this.getSelf());
})
I:
ActorSystem system = ActorSystem.create("My-Akka");
ActorRef master = system.actorOf(Props.create(Master.class));
master.tell(new Object_B_Message(), ActorRef.noSender());
マスタークラスは実装を受け取り、次のしていますObjectBがメッセージを受け入れ、何かを行い、object_C_messageをマスターに送信してObjectCをアクティブにします。
私はオブジェクトBを起動することができますが、object_c_messageを送信しようとすると、それはどこにも行き渡らず、マスターはそれを受信していないようです。ここ
はObjectBにのコードである:
public Receive createReceive() {
return receiveBuilder()
.match(Object_B_message.class, message -> {
、コードの次の行のどれがマスターにメッセージを送信することができなかった:
ActorRef ref = getContext().parent();
this.getSelf().tell(object_c_message, this.getSelf());
ref.tell(object_c_message, getSender());
ref.tell(object_c_message, ActorRef.noSender());
ref.tell(object_c_message, this.getSender());
ref.tell(object_c_message, ref);
ref.tell(object_c_message, context().parent());
ref.tell(object_c_message, this.getSelf());
アッカプリントコンソールに以下アプリケーションを終了する前に10回メッセージ:
[akka://My-Akka/user/$a/$f] Message [object_c_message] from Actor[akka://My-Akka/user/$a/$f#-489049040] to Actor[akka://My-Akka/user/$a/$f#-489049040] was not delivered. [1] dead letters encountered. This logging can be turned off...'.
私はちょうどeは正しく配線され、私は直接使うobject_C_messageとマスターを呼ぶことができたとマスターはC.
任意のヘルプ感謝のメッセージとアクティブ化オブジェクトを得ました。
こんにちは@Diego Martinoia。ありがとうございました。アクターに名前を追加し、ideのデバッグモードで実行しようとしました。 '[CoordinatedShutdown(akka:// My-Akka)] JVMシャットダウンフックからコーディネートされたシャットダウンを開始しています 私は何とか私のマスターがメッセージを子どもに送信した直後にシャットダウンしているので、マスターに電話しようとしているときにもう利用できないと感じています。 –
@ t-rex-50おそらく、あなたの「メイン」が終了していて、JVMが終了し、それを持つAsystemが終了します。あなたのメインコードを投稿してください。 –