如何在Akka.Net中等待所有工作完成?

时间:2015-05-06 19:43:17

标签: akka.net

我已成功将工作发送到演员池以执行我的工作,但现在我想对所有工作人员返回的结果进行一些汇总。我怎么知道每个人都完成了?

我提出的最好的方法是维护一组请求id并等待该集合变为零,但这似乎不够优雅。

1 个答案:

答案 0 :(得分:10)

通常,您希望使用我们称之为“Commander”的模式。基本上,您有一个有状态的参与者(Commander)负责启动和监视任务。然后,您可以将整个actor池中的实际工作分配出来,并让它们在完成后向Commander报告。然后,指挥官可以通过计算# completions / size of worker pool来跟踪作业的进度。

这样,工作人员可以在工作时独立监控和重新启动,但所有宝贵的任务级状态和信息都存在于Commander中(这称为"Error Kernel pattern"

您可以在Akka.NET scalable webcrawler demo中找到相关示例。

相关问题