Отвечает ли автопилот Akka на сообщения, которые уже были отправлены - PullRequest
2 голосов
/ 11 апреля 2019

При использовании Akka AutoPilot будет ли он обрабатывать сообщения, уже отправленные на тестовый зонд?

В частности, я должен ожидать, что этот код пройдет?

new JavaTestKitDsl(...) {{
  TestProbe probe = new TestProbe(...);
  probe.testActor().tell("Hello", getRef());
  // Be certain that the message has been queued
  Thread.sleep(1000);
  probe.setAutoPilot(new TestActor.AutoPilot() {
    public TestActor.AutoPilot run(ActorRef sender, Object msg) {
      sender.tell(msg, null);
      return noAutoPilot();
    }
  });
  expectMsg("Hello");
}};

Кажется, что это не так, как написано, но проходит, если я перемещаю setAutoPilot до того, как отправить сообщение.

В реальной системе тест намного сложнее, и я дошел до того, что три субъекта отправляют разные тестовые сообщения в одно и то же время. В этот момент я намеревался установить автопилот, чтобы было ясно, куда я ожидал прибыть сообщения, но, похоже, мне нужно настроить автопилот, прежде чем я отправлю сообщения, которые активируют других участников.

Документация не говорит об этом ничего, что я мог бы найти.

Это работает с Akka 2.5.18 и Java 10, если это имеет значение.

...