0

在这里,我使用 SmallestMailboxRouter 创建了一个路由器

ActorRef actorRouter = this?.getContext()?.actorOf(new Props(RuleStandardActor.class).withRouter(new SmallestMailboxRouter(38)),"standardActorRouter")

现在在 for 循环中我创建了 38 个演员

    for(int i=0;i <38;i++) {
    ruleStandardActorRouter?.tell(new StandardActorMessage(standard: standard, responseVO: responseVO, report: report), getSelf());
}

每个参与者将处理逻辑并返回分数和消息。我通过覆盖 onreceive 方法并将它们添加到列表中来接收消息

如果我多次运行该程序,我会得到不同的分数。但它应该总是返回与我给出相同输入相同的分数。

if (message instanceof StandardActorResponse) {
        StandardActorResponse standardActorResponse = message
        standardActorResponseList?.add(standardActorResponse)

}

这里 standardActorResponse 包含 message 和 score 。如果我只使用 for 循环而不是 akka 框架来使用相同的逻辑,我将收到一致的结果。但是在akka中随机得到不同的结果。例如,我有一些规则,例如 loginexistence 和 navigationexistence 和 alertsexistence 规则。我已经为这些规则提供了一个 html 源,以检查 html 源是否在该源中具有登录、警报、导航链接。有时我正在登录不存在,有时导航不存在,有时警报不存在通过使用 akka 路由器和演员。但是如果我使用 for 循环,我总是得到相同的结果

谁能帮我找到问题。我正在使用 akka 2.1.4

4

1 回答 1

1

在识别邮箱大小之前,for 循环可能已经完成。尝试在 for 循环中添加 sleep 以查看结果。

于 2014-01-15T13:30:26.060 回答