持久函数中的并行化
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);
我正在尝试了解并行化在 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);