Scalaで次のアクターの例を作成しました:http://pastebin.com/pa3WVpKy 行で発生するスロットルなし(SendMoneyメッセージの数を減らす):
val processed = iterations - counter.getCount/2
if (processed < i - banksCount * 5) Thread.sleep(1)
このテストでのメッセージ処理は非常に低速です(特に銀行関係者が少ない場合)。
これは、アクターのメールボックスがSendMoneyメッセージでいっぱいであり、ReadAccountResponseメッセージの受信に長い時間がかかるためです(通常、アクターのメールボックスはほぼメールボックスの最後にあり、メールボックス全体をスキャンする必要があります)。このような場合にメールボックスのスキャン時間を改善するにはどうすればよいですか?たぶん、いくつかのメッセージを高優先度として定義する可能性がありますか?通常のメッセージ用と優先度の高いメッセージ用の2つのメールボックスがあると便利です。優先度の高いメールボックスを最初にスキャンできます。また、「返信」メソッドは、優先度の高いメールボックスにメッセージを自動的に送信する可能性があります。または、通常のメッセージと応答用に2つのメールボックスを作成しますか?あなたの意見は何ですか?
よろしくWojciechDurczyński