如何在Scala actors中提高邮箱扫描时间

如何在Scala actors中提高邮箱扫描时间,scala,actor,throttling,Scala,Actor,Throttling,我在Scala中创建了以下演员示例: 不限制(减少SendMoney消息的数量)在以下行中发生: val processed = iterations - counter.getCount/2 if (processed < i - banksCount * 5) Thread.sleep(1) val processed=iterations-counter.getCount/2 if(已处理

我在Scala中创建了以下演员示例: 不限制(减少SendMoney消息的数量)在以下行中发生:

val processed = iterations - counter.getCount/2
if (processed < i - banksCount * 5) Thread.sleep(1)
val processed=iterations-counter.getCount/2
if(已处理
此测试中的消息处理非常慢(尤其是当银行参与者很少时)

这是因为参与者的邮箱中充满了SendMoney消息,接收ReadAccountResponse消息需要很长时间(它们通常位于邮箱的末尾,必须扫描整个邮箱)。 在这种情况下,如何缩短邮箱扫描时间? 也许有可能将某些消息定义为高优先级? 最好有两个邮箱——一个用于普通邮件,另一个用于高优先级邮件。可以首先扫描高优先级邮箱。 “回复”方法还可以自动将邮件发送到高优先级邮箱。或者创建两个邮箱-用于普通邮件和响应? 你有什么机会

问候
Wojciech Durczyński

解决这个问题的一个潜在的好办法是Phillip Haller的,scala编译器反射性地公开了匹配表达式可以匹配的对象类型的信息。然后,可以按消息类对参与者邮箱进行索引,查找速度可能会大大加快,尤其是在这种“大海捞针”的情况下


你可以看到,这是一个非常简单的方法。这似乎已经中断了一段时间,让我们希望它很快恢复

我相信Lift的参与者正是内置了这种优先级:与其覆盖单一的“act”方法,还可以根据行动的优先级实施许多不同的方法(不确定确切名称)


我不确定这是否解决了扫描速度减慢的问题,尽管这是一个完美的答案。谢谢。有人对重新激活半透明项目感兴趣吗?请在这里投票: