我是演员模特的新手并试图写一个简单的例子。我想使用Scala和Akka遍历目录树。程序应该找到所有文件并对每个文件执行任意(但快速)的操作。
我想检查一下如何使用actor对递归进行建模? 遍历完成后,如何优雅地停止演员系统? 如何控制演员数量以防止内存不足? 有没有办法让演员的邮箱变得太大? 如果文件操作需要很长时间才能执行,会有什么不同?
任何帮助将不胜感激!
答案 0 :(得分:2)
首先要注意的是有两种类型的工作:遍历文件层次结构和处理单个文件。作为第一个实现尝试,创建两个actor,actor A和actor B. Actor A将遍历文件系统,并使用要处理的文件的路径向actor B发送消息。当演员A完成时,它向演员B发送“全部完成”指示并终止。当演员B处理“全部完成”指示符时,它终止。这是一个基本实现,可用于学习如何使用actor。
其他一切都是对此的变异。下一个变体可能是创建两个带有共享邮箱的actor B.关机有点复杂,但仍然很简单。下一个变体是创建一个调度员演员,将一个或多个演员B的工作分配出去。下一个变体使用多个actor A来遍历文件系统,主管可以控制创建的actor数量。
如果您遵循此开发计划,您将学到很多关于如何使用Akka的知识,并且可以回答您的所有问题。