1

我有一个连接到 cosmosDB 更改提要的函数应用程序,它运行良好,但我有一个问题,当我发布应用程序时,它会处理当前在受监视集合中的所有文档的更改,这似乎是错误的

函数初始化如下

 [FunctionName("Function1")]
        public static async Task RunAsync([CosmosDBTrigger(
            databaseName: "XXX",
            collectionName: "YYY",
            ConnectionStringSetting = "CosmosDb",
            LeaseCollectionName = "leases", LeaseCollectionPrefix = "cloud")]IReadOnlyList<Document> documents, TraceWriter log)
        {
}

我所做的唯一更改是更改 LeaseCollectionPrefix,这是否会导致触发器接收集合中所有文档的更改,因为它被视为新租约?

4

1 回答 1

4

CosmosDB 触发器检测文档更改

  1. 当它运行并发生变化时

  2. 在场景 1 中第一次触发后(租用中的ContinuationToken 由 null 更新为有效值),它可以接收到后来发生的所有更改,甚至包括未运行时发生的更改。

在您的情况下,我假设您之前可能使用过租约,并且在租约触发器未运行cloud时对 CosmosDB 进行了一些更改。cloud这次您发布代码,所有更改都会一起显示。

显然,解决方案是删除您收藏cloud中的旧租约。leases

于 2018-10-08T04:09:56.363 回答