我目前在斯卡拉与两个演员合作。一个生产者生成一些数据并将其发送到参与者。生产者发送HashMap[String,HashMap[Object,List[Int]]]
通过消息(具有此沿标记的发送器):参与者邮箱溢出。斯卡拉
parcer ! (this,data)
解析器不断等待消息,像这样:
def act(){
loop{
react{
case (producer, data)=> parse(data);
}
}
}
该程序完全运行在正常circunstances。问题伴随着大量的数据和大量的消息发送(散列大约有10^4个元素,内部散列大约100个元素,列表长100个),程序崩溃。它显示没有错误也没有例外。它只是停止。
问题似乎是我的生产者的工作速度比解析器快得多(此时我不想要多个解析器)。
看完之后scala mailbox size limit我在想我的解析器的邮箱是否达到了限制。该文章还提供了一些解决方案,但我首先需要确保这是问题。我如何测试这个?
有没有办法知道演员的内存限制?如何阅读邮箱中已用/可用内存?
对于尚未发布在that link中的工作流程的任何建议也是受欢迎的。
感谢,
如果你注意看,在不同的实现,你应该看看阿卡[1],它既有负载均衡[2]和工作窃取[3] [1]:www.akkasource。 org [2]:http://klangism.tumblr.com/post/582112173/akka-message-routing-part-2 [3]:http://doc.akkasource.org/dispatchers – 2010-07-09 15:07:42