在Akka协调批处理

时间:2013-12-07 08:48:12

标签: akka batch-processing

我需要在Akka中一个接一个地批处理2个大文件,并且我试图找出在控制演员中协调它的最佳方法。每个文件中的行可以并行处理,但必须处理第一个文件中的所有行,然后才能处理第二个文件中的任何行。

我想要有以下演员:

  • File1WorkerActor - 处理第一个文件中的一行。
  • File2WorkerActor - 处理第二个文件中的一行。
  • File1Actor - 将第一个文件中的行委托给多个worker actor。
  • File2Actor - 将第二个文件中的行委托给多个worker actor。
  • TopLevelActor - 要求File1Actor处理文件1,等待它完成,然后要求File2Actor处理文件2.

我不确定的是,文件演员如何知道所有工作人员何时完成以及TopLevelActor如何知道File1Actor何时完成?

我原以为FileActor只会为给定文件中的行数保留一个计数器,而worker会为每个已处理的行发送一条消息。计数器倒计时后,它会向TopLevelActor发送一条消息。这种方法有什么问题吗?或者实施某种未来处理会更好吗?

1 个答案:

答案 0 :(得分:0)

您的解决方案听起来对我不对。另外,我有兴趣检查FSM和/或成为/不成功的功能,以避免在上一个任务未完成时向工作人员提交另一个任务