我有一个非常奇怪的问题CosmosDB
& Azure Functions
。我经常删除我的数据库并在 DEV 中重新创建它。然后我重新部署函数应用程序。当我在应用程序中调用 API 并调用 CosmosDB 触发器时,我通常会看到leases
创建的集合。这是一个典型的触发器:
[FunctionName("MyTrigger")]
public static async Task RunAsync([CosmosDBTrigger("MyDatabase", "MyContainer",
ConnectionStringSetting = "CosmosConnectionString", LeaseCollectionName = "leases",
LeaseCollectionPrefix = "MyTrigger", CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
ExecutionContext executionContext)
{
// code
}
由于某种原因,leases
不再创建该集合。我重新创建了数据库,多次重新部署了函数应用程序,但没有成功地进行 API 调用。我错过了什么?
编辑:我查看了日志,发现消息有很多Microsoft.Azure.Documents.ChangeFeedProcessor.Exceptions.LeaseLostException
异常The lease was lost
,所以我不确定发生了什么。
EDIT2:这是我能够从日志中提取的更详细的错误消息:
“源集合'MyContainer'(在数据库'MyDatabase'中)或租约集合'leases'(在数据库'MyDatabase'中)不存在。这两个集合必须在侦听器启动之前存在。要自动创建租约集合,请设置'CreateLeaseCollectionIfNotExists' 到 'true'
请注意,CreateLeaseCollectionIfNotExists
已设置为 true。