首页 > 解决方案 > 一个可以侦听所有容器的 Cosmos DB 更改源的 Azure 函数

问题描述

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

将来我的容器数量将从 3 个增加到 100 个。

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

标签: azureazure-functionsazure-cosmosdbazure-cosmosdb-changefeed

解决方案


简而言之:没有。

Azure Cosmos DB 中的更改源是按发生顺序对容器进行更改的持久记录。Azure Cosmos DB 中的更改源支持通过侦听 Azure Cosmos容器的任何更改来工作。

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

Azure Cosmos DB 中有关更改源的文档明确指出,更改源适用于一个特定容器。

但是,您可能可以采取不同的方法来解决您的问题。最重要的问题是:您要解决的实际问题是什么?

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

一种选择可能是创建一个计时器触发的函数,该函数将使用拉模型读取更改提要。这使您能够循环该函数中的容器并准备处理每个容器的更改(例如,通过将信息放入队列或使用具有扇出/扇入模式的持久函数)。


推荐阅读