问题标签 [azure-cosmosdb-changefeed]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
44 浏览

azure - 使用 CosmosDB 更改源检测非时间戳数据中的删除

我有一个包含大约 30,000 条记录的数据源。当我轮询数据源时,我一口气收到了所有记录。没有指示数据源上次更新时间的时间戳。

我想使用 Azure 将数据转换为发布到服务总线的一系列添加、更新和删除指令。

我可以将每条记录发布到 CosmosDB 并使用更改提要生成添加和更新指令,然后将其发布到服务总线。但这不会处理删除。在删除的情况下,CosmosDB 会有记录,但传入的数据源没有,因此不会创建删除指令。

在这种情况下,有没有办法使用 CosmosDB 更改提要来生成删除?如果没有,是否有另一种“Azurey”方式来通过轮询非时间戳数据源生成添加、更新和删除指令?非常感谢任何帮助!谢谢

0 投票
1 回答
136 浏览

c# - CosmosDB 更改更改源处理器名称

我有一个更改提要处理器:

HandleChangesAsync()变得太大,故障不再被很好地隔离。我想将其分解为多个处理器,即“new-processor-name-1”和“new-processor-name-2”,但我不确定如何以新的方式进行处理处理者不会从一开始就重新处理所有现有文档。

有什么方法可以让新处理器从原来的处理器停止的地方开始?

0 投票
2 回答
298 浏览

azure-cosmosdb - Cosmos Db 更改 Feed 未提供预期结果

我正在尝试按照以下代码从 Cosmos db Change Feed 中的受监控 Db 中获取所有更改。我正在尝试不同的持续时间,例如今天发生的变化或过去 7 天发生的变化或整体发生的变化。现在在所有情况下,我在第一次获得所有更改,而在第二次运行中没有任何更改,除非有更改即将到来。我想知道我在这里做错了什么,如果我每次运行都必须在上周进行更改,如果我的以下代码不正确,我应该如何配置更改提要。提前致谢

0 投票
1 回答
344 浏览

azure - Azure Functions:了解多个应用上下文中的更改源

根据https://docs.microsoft.com/en-us/azure/cosmos-db/change-feed-processor上的下图,至少有 4 个分区键范围分布在两台主机之间。我在这张图中难以理解的是主机和消费者之间的区别。在 的上下文中Azure Functions,是否可以说主机是Function应用程序而消费者是活动/温暖的实例?

在此处输入图像描述

我想创建一个包含 N 多个Function应用程序的设置,每个应用程序都有 0-200 个活动实例(取决于工作负载)。同时,我想阅读Change Feed。如果我CosmosDBTrigger在每个应用程序中使用具有相同连接字符串和租用容器的 a,这是自动处理还是需要手动实现?

0 投票
2 回答
301 浏览

azure - 一个可以侦听所有容器的 Cosmos DB 更改源的 Azure 函数

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

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

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

0 投票
0 回答
167 浏览

c# - 如何通过更改源处理来自 Cosmos DB 中不同容器的更改

我在 Cosmos DB 中有一些容器一直在变化。我需要提供一些机制来读取这些容器中的所有更改。

我正在尝试为更改馈送处理器 (CFP) 实现构建器/工厂。就我而言,我必须为不同的容器动态创建 CFP 实例。我现在如何看待解决方案 - 我需要一个监听队列的 WebJob/Console 应用程序。当另一个应用程序在 Cosmos DB 中创建新容器时,它也会向队列发送一条新消息。队列中的消息包含用于创建新 CFP 的所有信息(连接字符串、集合名称、租用容器名称等)。应用程序创建新的 CFP 并在后台的新线程中永远运行它。

这是我如何创建新 CFP 的代码

问题是这是一个不好的方法,因为将来可能会有 100 个甚至更多的集合,所以我需要在后台创建 100 个额外的线程。我正在寻找有关架构应用程序以及如何以正确方式完成所有这些的一些想法。如果可以在一个应用程序中处理所有容器的更改,那就太好了。

0 投票
1 回答
644 浏览

azure-cosmosdb - Cosmos DB Change Feed 的时间分辨率是多少?

我的理解是(例如从这里),Cosmos DB 更改源不能保证每次更新都会触发一个事件。例如,当对同一文档的两次更新几乎同时发生时,可能会仅触发一次更改馈送处理器(例如,监听更改馈送的 Azure 函数),即两次更新中的后者。首先,我的理解正确吗?如是:

  1. 根据您的经验,更新的典型最小时间间隔是多少,以便为每个事件单独触发更改事件?(不是一个确切的值,只是数量级已经很有帮助。)
  2. 此时间间隔是否有 SLA?
0 投票
1 回答
366 浏览

azure - Cosmos db 更改提要触发器在函数进入睡眠状态后未触发

我有一个在本地运行良好但在 Azure 中不会触发的函数,除非该函数是“唤醒”的。该函数只是将项目从一个容器复制到另一个容器,并交换主键和 id 列(作为最终一致的二级索引)。这个应用中有两个功能,都是 Cosmos 触发器(不同的源容器和租约前缀);我所有的其他功能都在其他应用程序中。

该功能在 Linux 消费计划中,通过GitHub ActionAzure/functions-action@v1部署,它使用 zipdeploy,应该是同步触发器。没有其他函数在该容器上侦听(本地实例侦听模拟器),并且此函数无论如何都有唯一的租约前缀。

如果我在门户中查看函数应用程序(甚至只是概览页面),该函数会“唤醒”并处理所有 Cosmos DB 项目。如果我然后关闭概述页面,等待约 30 分钟,然后更改监视容器中的项目,则该功能不会触发。Azure Monitor 日志中没有任何内容,并且目标容器中的相应项目不会更改。我可以等待几 (10) 分钟并刷新,但日志或目标容器中仍然没有任何内容。然后当我重新打开概览页面时,该功能立即触发,并且目标容器中的项目几乎立即更新;Azure Monitor 日志会在 2-3 分钟后显示(正常的延迟量)。这种行为是 100% 可重复的。

我已经多次检查了所有故障排除建议,但没有发现任何有用的信息。

我如何在没有在门户中观察的情况下触发此功能?

0 投票
1 回答
331 浏览

azure - 如何在 Azure Cosmos DB 更改源中启用完全保真度

我正在尝试使用以下代码在更改提要中启用完全保真度:

但我得到以下异常:

如何为数据库帐户启用此模式?我在门户网站上没有看到选项。

0 投票
1 回答
187 浏览

java - 在 Java 中使用 Azure Cosmos DB 发布/订阅的示例

我需要一个带有 Azure Cosmos DB 的发布/订阅事件消息系统。我使用 Azure Cosmos DB Java SDK v4。

我尝试使用基于此示例的 ChangeFeedProcessor https://github.com/Azure-Samples/azure-cosmos-java-sql-api-samples/blob/main/src/main/java/com/azure/cosmos/examples /changefeed/SampleChangeFeedProcessor.java但它不像预期的那样工作。

我的问题:

  • 饲料收集/容器继续增长。在所有活动节点都收到事件后,如何删除事件?
  • 事件的延迟似乎相对较大。大约一分钟。
  • 只有一个节点接收事件。这对于负载平衡来说似乎很有趣,但这不是我的用例。