我在 Scala 中创建了以下演员示例:http: //pastebin.com/pa3WVpKy 没有在行中发生的节流(减少 SendMoney 消息的数量):
val processed = iterations - counter.getCount/2
if (processed < i - banksCount * 5) Thread.sleep(1)
此测试中的消息处理非常慢(尤其是当银行参与者很少时)。
那是因为演员的邮箱里塞满了 SendMoney 消息,接收 ReadAccountResponse 消息需要很长时间(它们通常几乎在邮箱的末尾,必须扫描整个邮箱)。在这种情况下如何提高邮箱扫描时间?也许有可能将某些消息定义为高优先级?最好有两个邮箱——一个用于普通邮件,一个用于高优先级邮件。可以先扫描高优先级邮箱。“回复”方法也可以自动将消息发送到高优先级邮箱。或者可能创建两个邮箱 - 用于通常的消息和响应?你有什么意见?
问候 Wojciech Durczyński