gpt4 book ai didi

c# - 具有完成任务的服务结构任务队列

转载 作者:太空宇宙 更新时间:2023-11-03 18:55:33 26 4
gpt4 key购买 nike

我的工作可以分解为更小的任务,每个任务最多可能需要 30 分钟才能完成。任务完成后,必须运行清理任务。

enter image description here

每个任务都是 CPU 密集型操作,必须在单独的计算机上运行。

问题是我无法找到一种方法来知道所有任务何时完成。如何在 Service Fabric 中创建应用程序,以便在所有任务完成后可以运行额外的清理任务?

此外,如何才能使当任何任务失败或意外关闭时,向所有工作人员发送取消信号,然后调用清理任务?

最佳答案

您还可以使用 ServiceFabric Actors 来满足您的要求。

  • 创建一个被触发来完成工作的中央“JobService”(例如托管 WebApi 的无状态服务)
  • 创建一个将处理单个任务的“TaskActor”
    • 在 ActorInterface 中发布取消 token
  • 在“JobService”中,为每个任务指定一个唯一的 ID,并将其用作“ActorId”
  • 在您的“JobService”中,等待参与者完成任务并在所有任务完成后触发清理。如果其中一个参与者抛出异常,您还可以取消其他参与者。

您可以查看分区概念,了解参与者如何分布在节点上。

https://learn.microsoft.com/en-us/azure/service-fabric/service-fabric-reliable-actors-platform#service-fabric-partition-concepts-for-actors

根据您的场景,actorId 可以保持一致(例如 taskActor1、taskActor2)以重用资源,或者您可以使用 guid 使它们对于每个作业都是唯一的。

关于c# - 具有完成任务的服务结构任务队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46386243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com