ここで、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 が含まれます。akkaフレームワークの代わりにforループを使用するだけで同じロジックを使用している場合、一貫した結果が得られます。しかし、akkaではランダムに異なる結果が得られます。たとえば、loginexistence、navigationexistence、alertsexistence ルールなどのルールがあります。これらのルールに 1 つの HTML ソースを指定して、そのソースにログイン、アラート、ナビゲーション リンクがあるかどうかを確認しました。ログインが存在しない場合、ナビゲーションが存在しない場合、akka ルーターとアクターを使用してアラートが存在しない場合があります。しかし、forループを使用すると、常に同じ結果が得られます
誰でも問題を見つけるのを手伝ってもらえますか。私はakka 2.1.4を使用しています