发布CosmosDB变更Feed上的Azure V1功能会触发所有变更

时间:2018-10-05 14:41:37

标签: azure azure-functions azure-cosmosdb

我有一个功能应用程序,可以连接到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,这会导致触发器接收集合中所有文档的更改,因为它被视为新的租约吗?

1 个答案:

答案 0 :(得分:4)

CosmosDB触发器检测到文档更改

  1. 运行时发生更改

  2. 在方案1中首次触发后(租约中的ContinuationToken从null更新为有效值),它可以接收以后发生的所有更改,甚至包括未运行时发生的更改。

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

显然,解决方案是删除cloud集合中的旧leases租约。