完成所有过程后触发Azure功能

时间:2018-07-06 14:26:07

标签: c# asp.net azure azure-functions

是否只有在队列中所有项目都已处理时才触发Azure功能?

我有一个包含多个需要完成的验证的队列。只有在所有验证均得到验证后,它才应触发下一个Azure功能,该功能将根据这些验证来创建报告

我尝试过的

  • 在处理完项目后,存储结果(validations.Processed = True),然后进行检查

    bool allProcessed = !validations
        .Where(v => v.LabFormulierId == validation.LabFormulierId)
        .Where(!x.Processed)
        .ToList()
        .Any();
    
  • 将其添加到临时表中,并在项目完成处理后从表中删除

    bool allProcessed = !validationsToDo
        .Where(v => v.LabFormulierId == validation.LabFormulierId)
        .ToList()
        .Any();
    

然后稍后检查是否全部使用此var处理,并且只有这样才触发下一个Azure函数

...
if (allProcessed)
{
    await createReportQueueCollector.AddAsync(formulier);
    log.Info($"Add Formulier {formulier.Guid} to create-report queue");
}

两个都对我不起作用...有一种干净的方法吗?

1 个答案:

答案 0 :(得分:1)

在您的代码中,尚不清楚validations是什么以及是否将它们存储在外部。

看看Durable Functions,它们提供了更高级别的API以关联多个动作。队列在幕后使用,但对开发人员而言是一种隐藏的方式。