我已成功将工作发送到演员池以执行我的工作,但现在我想对所有工作人员返回的结果进行一些汇总。我怎么知道每个人都完成了?
我提出的最好的方法是维护一组请求id并等待该集合变为零,但这似乎不够优雅。
答案 0 :(得分:10)
通常,您希望使用我们称之为“Commander”的模式。基本上,您有一个有状态的参与者(Commander
)负责启动和监视任务。然后,您可以将整个actor池中的实际工作分配出来,并让它们在完成后向Commander
报告。然后,指挥官可以通过计算# completions
/ size of worker pool
来跟踪作业的进度。
这样,工作人员可以在工作时独立监控和重新启动,但所有宝贵的任务级状态和信息都存在于Commander中(这称为"Error Kernel pattern")
您可以在Akka.NET scalable webcrawler demo中找到相关示例。