一个Azure函数,可以监听所有容器的Cosmos DB Change提要

一个Azure函数,可以监听所有容器的Cosmos DB Change提要,azure,azure-functions,azure-cosmosdb,azure-cosmosdb-changefeed,Azure,Azure Functions,Azure Cosmosdb,Azure Cosmosdb Changefeed,现在我有一个Cosmos DB,它有三个不同的容器,因此我使用三个不同的函数来监听来自这个Cosmos DB的变更提要事件 在未来,我的容器数量将从3个增加到100个 那么,有没有可能有一个函数可以监听所有容器中的所有更改,并可以从中检测容器更改的内容呢?简言之:没有 Azure Cosmos DB中的Change feed是对容器的更改的持续记录,这些更改按照发生的顺序进行。Azure Cosmos DB中的更改提要支持通过侦听Azure Cosmos容器来获取任何更改 及 更改提要可用于容器

现在我有一个Cosmos DB,它有三个不同的容器,因此我使用三个不同的函数来监听来自这个Cosmos DB的变更提要事件

在未来,我的容器数量将从3个增加到100个

那么,有没有可能有一个函数可以监听所有容器中的所有更改,并可以从中检测容器更改的内容呢?

简言之:没有

Azure Cosmos DB中的Change feed是对容器的更改的持续记录,这些更改按照发生的顺序进行。Azure Cosmos DB中的更改提要支持通过侦听Azure Cosmos容器来获取任何更改

更改提要可用于容器中的每个逻辑分区键,它可以分布在一个或多个使用者之间进行并行处理

上的文档清楚地说明了更改提要是针对一个特定容器的

然而,可能有不同的方法可以用来解决你的问题。最重要的问题是:你想要解决的问题到底是什么

如果您需要使用函数处理Cosmos DB中的更改,我可以想象处理更改的逻辑对于每种类型的数据可能(将)是不同的。所以对于每个容器。如果这是而不是情况,则数据不必位于不同的容器中


一个选项是创建一个计时器触发的函数,该函数将被激活。这使您能够循环该函数中的容器,并准备处理每个容器的更改(例如,通过将信息放入队列或使用具有持久性的函数)。

Cosmos DB的推荐模式是使用单个或几个数据容器,并通过属性值对数据进行逻辑分区,而不是分割成许多容器。如果可能的话,出于更改提要和其他原因,有必要对提议的设计进行审查,以确定是否有方法整合容器并避免这种痛苦

这就是说,如果必须支持未知且数量不断增加的容器,则可以通过SDK动态实现。使用
GetChangeFeedProcessorBuilder
实例化处理器实例时,可以提供容器名称作为参数。给定所有目标容器的已配置或已发现列表,可以创建多个change feed处理器实例并并行运行


这可能有多种方式。考虑使用iHistService服务的ASP.NET核心应用程序,避免这种情况下的Azure函数。

谢谢您的回答@ RKVvdBoCH。如我所见,拉动模型目前处于预览阶段,尚未准备好生产。我在找一些我可以带去生产的东西。我正在寻找一种不需要创建100个函数,并且可以快速处理数据的方法。存储在容器中的数据在每个容器中具有相同的格式。