持久函数中的并行化

Parallelization in Durable Function

我正在尝试了解并行化在 Durable Function 中的工作原理。我有一个持久函数,我首先得到一个项目列表,然后所有项目应该 运行 并行。意味着执行 10 个项目和 10000 个项目所花费的时间应该相同?我该怎么做?

有两种可能的方法。第一种是为每个作业使用一个子编排器,以便每个子编排器只处理一个特定的作业。这是此方法的文档 https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-sub-orchestrations?tabs=csharp 文档中的示例似乎与您的相似。

另一种是使用 ContinueWith,这样每个作业都有自己的“链”

List<Task> tasks = new List<Task>();
foreach (var job in jobs){
   tasks.Add(context.CallActivityAsync<Group>(nameof(GroupNameReaderFunction), job)
        .ContinueWith(prevTask => emailTasks.Add(context.CallActivityAsync(nameof(EmailSenderFunction), prevTask.Result))));
}
await Task.WhenAll(tasks);