我有一个带有 cosmos db 触发器的 azure 函数,它可以进行一些计算并将结果写入数据库。如果出现问题,我希望有可能从第一个项目或特定项目开始再次进行计算。是否可以?谢谢
public static void Run([CosmosDBTrigger(
databaseName: "db",
collectionName: "collection",
ConnectionStringSetting = "DocDbConnStr",
CreateLeaseCollectionIfNotExists = true,
LeaseCollectionName = "leases")]IReadOnlyList<Document> input, TraceWriter log)
{
...
}
最佳答案
目前,StartFromBeginning
选项未向 Cosmos DB 触发器公开。默认行为是从函数开始运行时开始接收更改,如果主机/运行时关闭,将生成租约/检查点,因此当主机/运行时备份时,它将从最后一个检查点项目中获取。
触发器不会实现死信或错误处理,因为如果错误与批处理本身无关,它可能会生成无限循环/意外计费/同一批处理的多次处理(例如,您处理文档并然后发送电子邮件,但电子邮件失败,整个批处理将因与提要本身无关的错误而被重新处理),因此我们建议用户在函数代码中实现自己的 try/catch 或错误处理逻辑。它与事件中心触发器的方法相同。
话虽这么说,我们正在揭露几个 new options on the Trigger并且有一位贡献者正在研究 an advanced retrying mechanism .
关于Azure 函数 CosmosDbTrigger(从头开始选项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888473/