在这里,我使用 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