我可以在持久函数中使用 foreach 循环吗?

Lym*_*edo 3 azure-functions azure-durable-functions

我已经编写了第一个持久函数,我想知道在协调器函数中使用 foreach 循环是否可能/良好的做法?

编排中的第一个活动返回项目 ID 列表,我想循环遍历该列表并使用子编排为每个项目 ID 执行一系列活动。

我创建了一个测试函数,它似乎有效。我观察到的唯一行为是,每次协调器重播并且当它到达 foreach 循环时,它都会迭代整个列表,直到到达当前项目,然后执行活动。

任何建议/意见将不胜感激。

谢谢

Imr*_*had 7

查看您的示例,这是非常标准的扇出/扇入情况。您可以并行运行活动的循环,但请确保异步执行。您可以在此处找到用例和示例。

https://learn.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-concepts#fan-in-out

根据评论

这正是 Orchestrater 应该如何工作的。编排正在使用事件源模式。当 Orchestrator 安排活动时,它会进入睡眠状态,当活动完成时,它会醒来。每次 Orchestrator 唤醒时,它总是会从头开始重播,并检查执行历史记录以查看它是否已完成给定的活动并继续。因此,在循环的情况下,它将安排所有活动并进入睡眠状态,当醒来时,它会从头开始重播,以查看是否已完成其任务。我强烈建议您观看来自 Microsoft 的 Jeff Hollan 的以下剪辑,我相信看完之后您会有非常清晰的想法。

编排如何运作

  • 感谢您提供视频链接。现在我明白了历史表是如何工作的,这一切都更有意义了。 (3认同)
  • 我已经更新了我的答案。只要看一下下面的片段3-4分钟,你就会清楚了。 (2认同)