我的工作可以分解为较小的任务,每个任务最多可能需要30分钟才能完成。任务完成后,必须运行清理任务。
每个任务都是CPU密集型操作,必须在单独的计算机上运行。
问题是我找不到办法知道所有任务何时完成。如何在Service Fabric中创建应用程序,以便在完成所有任务后,可以运行其他清理任务?
此外,我怎样才能使任何任务失败或意外关闭时,向所有工作人员发送取消信号,然后调用清理任务?
答案 0 :(得分:4)
您也可以根据需要使用ServiceFabric Actors。
您可以查看分区概念,了解演员如何在您的节点中传播。
根据您的场景,actorIds可以是一致的(例如taskActor1,taskActor2)来重用资源,或者您可以使用guid使它们对每个作业都是唯一的。
答案 1 :(得分:2)
考虑使用事件驱动(或pub/sub)方法。
' start-task'可以通知预期的子任务数量。每个完成的任务都可以触发事件。清理任务可以等待启动事件和所有完成事件。清理后,如果需要,它可以通知听众。
以类似的方式,事件可以包含有关进度,失败和取消的信息。