是否只有在队列中所有项目都已处理时才触发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");
}
两个都对我不起作用...有一种干净的方法吗?
答案 0 :(得分:1)
在您的代码中,尚不清楚validations
是什么以及是否将它们存储在外部。
看看Durable Functions,它们提供了更高级别的API以关联多个动作。队列在幕后使用,但对开发人员而言是一种隐藏的方式。