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



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

将来我的集装箱数量将从3个增加到100个。

那么,是否有可能有一个函数将监听所有容器中的所有更改,并且可以检测来自哪些容器的更改?

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

也就是说,如果必须支持未知且数量不断增长的容器,可以动态实现的一种方法是通过SDK使用Change Feed Processor。当使用GetChangeFeedProcessorBuilder实例化处理器实例时,您可以提供容器名称作为参数。给定所有目标容器的配置或发现列表,可以创建多个更改提要处理器实例并并行运行。

可以以多种方式承载。考虑使用ASP。. NET Core应用程序中使用IHostedService,在这种情况下避免使用Azure函数。

总之:no.

Azure Cosmos DB中的更改feed是对容器的更改的持久记录按照它们发生的顺序。通过监听Azure Cosmos容器更改Azure Cosmos DB工作中的feed支持

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

关于Azure Cosmos DB中的Change feed的文档清楚地说明了Change feed是针对一个特定的容器的。

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

你试图解决的问题?如果您需要使用函数处理Cosmos DB中的更改,我可以想象处理更改的逻辑可以(将)为每种类型的数据不同。对于每个容器。如果不是如果数据不必在不同的容器中?

一个选项可以是创建一个计时器触发函数,将读取变化饲料与拉模型。这使您能够循环该函数中的容器,并准备处理每个容器的更改(例如,通过将信息放入队列或使用具有Fan-Out/Fan-In模式的持久函数)。

最新更新