Java Akka单身演员不接收消息

Java Akka单身演员不接收消息,java,unit-testing,akka,actor,Java,Unit Testing,Akka,Actor,我试着在这里介绍这个问题的尽可能简单的变化。。 我编写了一个单元测试,作为代码的副作用,创建了一个单例参与者。在他的启动前方法中,他通过调用startJobCoordinator方法来创建其他单身演员 private boolean startJobCoordinator(JobConfiguration jobConfiguration) throws InterruptedException { ActorRef jobRef = createSingletonActor(Prop

我试着在这里介绍这个问题的尽可能简单的变化。。 我编写了一个单元测试,作为代码的副作用,创建了一个单例参与者。在他的启动前方法中,他通过调用startJobCoordinator方法来创建其他单身演员

private boolean startJobCoordinator(JobConfiguration jobConfiguration) throws InterruptedException  {
    ActorRef jobRef = createSingletonActor(Props.create(JobCoordinator.class, jobConfiguration.getId()), jobConfiguration.getId());
    jobRef.tell("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD", self());
    TimeUnit.SECONDS.sleep(1);
    return true;
}

private ActorRef createSingletonActor(Props props, final String name) {
    final ClusterSingletonManagerSettings settings = ClusterSingletonManagerSettings.create(getContext().system());
    getContext().actorOf(ClusterSingletonManager.props(props, PoisonPill.getInstance(), settings), name);

    ClusterSingletonProxySettings proxySettings = ClusterSingletonProxySettings.create(getContext().system());
    return getContext().actorOf(ClusterSingletonProxy.props("/user" + name, proxySettings), name + "Proxy");
}
现在,在AbstractActor类型的JobCoordinator singleton actor中,我编写了一个receive方法,如下所示:

match(String.class, System.err::println).build();
在单元测试中,未收到(也未打印)“dddddddddd”消息

当同一代码作为运行整个系统的一部分运行时,JobCoordinator参与者将获得消息。 当我将JobCoordinator创建为常规参与者而不是单个参与者时,他会得到消息(甚至作为单元测试的一部分)


我真的不懂。。任何帮助都将不胜感激。

问题是,我在测试中使用JMock来模拟JobCoordinator(由另一个测试使用,但注释也影响了此测试)。

如果您向我们展示
JobCoordinator
ClusterSingletonManager
的代码,这将非常有用,
ClusterSingletonProxy
clustersingletonmanager设置
。在您的设计中有许多复杂的层次,这使得它很难遵循,因此可能值得一看。ClusterSingletonProxy、ClusterSingletonManager和ClusterSingletonManagerSettings都是akka类,只有job coordinator不是,我不确定是否允许在此处发布代码。这个问题不知怎么消失了,我不知道怎么解决。。如果我能给出答案,我会更新,以备将来参考。