【问题标题】:How to get existing orchestration instance in DTF?如何在 DTF 中获取现有的编排实例?
【发布时间】:2023-01-30 16:42:38
【问题描述】:

注意 - 我没有使用 Azure 持久函数。只是持久任务框架。

我有一个场景,我需要运行一个编排,并在其中一个任务中检查一个标志。如果标志为真,我将继续进行编排。如果它为假,我将一些信息放入数据库(编排执行 ID、输入数据等)并停止编排。

我有一个 Service Fabric Actor,它每 24 小时运行一次,并检查数据库中的条目以查找已暂停的编排。然后它会检查每个编排的上述标志(基于某些标识符,它会调用外部 API 并获取此信息)。如果标志为真,则需要恢复编排。如果在 14 次重试后标志仍然为假,则需要删除编排。

我正在考虑关注DTF Waiting for external events。所以基本上,我的 Actor 会发起一个事件来恢复我的编排。问题是引发一个事件,我需要创建编排的实例。如何重新创建现有编排的实例。我有 orch 实例 ID,但看不到任何获取同一编排实例的方法。

【问题讨论】:

    标签: azure-durable-functions


    【解决方案1】:

    如果您有 InstanceId,引发事件很简单:

    taskHubClient.RaiseEventAsync(new OrchestrationInstance() { InstanceId = instanceId }, eventName, eventData);
    

    其中 taskHubClient 是 TaskHubClient 类的实例。

    接收事件对版本控制操作非常敏感。如果通过 DTF 客户端发送的类型与编排定义中定义的类型完全匹配,则 DTF 编排仅接收事件。因此,我建议彻底测试事件发送逻辑,以避免事件已注册但未被消费。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2018-03-13
      • 1970-01-01
      • 2020-12-14
      相关资源
      最近更新 更多