Akka无限循环死信

时间:2016-09-29 19:10:36

标签: akka

我有两个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多个循环并且出现了死信。

0 个答案:

没有答案