我有两个UntypedActors,它们将在无限循环中交换消息。
class ActorA extends UntypedActor {
@Override
public void onReceive(Object message) throws Throwable {
if (message instanceof String) {
ActorRef actorb = getContext().actorOf(Props.create(ActorB.class));
actorb.tell(0, getSelf());
}
if (message instanceof Integer) {
int count = (Integer) message;
System.out.println("ActorA: " + count++);
getSender().tell(count, getSelf());
}
}
}
class ActorB extends UntypedActor {
@Override
public void onReceive(Object message) throws Throwable {
if (message instanceof Integer) {
int count = (Integer) message;
System.out.println("ActorB: " + count++);
getSender().tell(count, getSelf());
}
}
}
以下是将执行上述演员的代码。
ActorSystem system = ActorSystem.create("bb");
ActorRef master = system.actorOf(Props.create(ActorA.class), "ddd");
master.tell("Msg", master);
system.shutdown();
经过多次迭代后我突然收到:
从演员[akka:// bb / user / ddd / $ a#-1708720414]到演员[akka:// bb / user / ddd#250962293]未送达。 [1]遇到死信。
我的问题是为什么在两个演员之间的多次循环后我终于收到了死信?我知道它与内存分配有关但我只收到了100多个循环并且出现了死信。