问题标签 [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 回答
21 浏览

.net - 如何在 C# 中读取未知类型的 ComosDB 更改提要?

我有一个单一的 CosmosDB 容器,我想将更改馈送连接到该容器中。该容器内部存储了一些不同的数据结构,通常会通过数据类型标签进行查询。我想根据更新的对象类型以不同的方式处理更改提要。有没有办法将查询附加到更改提要上,或者我应该尝试将返回数据类型设置为字典或动态?

0 投票
1 回答
53 浏览

c# - 更改提要迭代器内容反序列化

目前,我正在寻找使用 System.Text.Json 从 Change Feed Iterator 内容中反序列化实体的方法。

我从文档中找到了这个示例,但它使用了 Newtonsoft.Json,我不喜欢使用 JObject 和 JsonTextReader 的方法。有什么办法可以让它更干净整洁吗?

我试图做这样的事情,但我的方法不起作用。

0 投票
2 回答
63 浏览

azure-cosmosdb - 复制 CosmosDB 集合并按物理分区保留项目顺序的最有效方法是什么?

我使用 Azure 数据工厂尝试了许多不同的组合来创建 CosmosDB 集合的克隆,该集合维护写入分区的项目的顺序,但除非我指定批量写入大小为 1,否则它不会保持顺序。即使从映射数据流中源的更改源触发也不会保留顺序。我们编写了一个简单的工具,可以一次复制一条记录,但很明显,这很慢。

我们将 Cosmos 用作事件存储,更改馈送处理器为我们的投影仪提供数据 - 这一切都运行良好,但我们希望将事件复制到不同的环境中以测试更改。这需要保留原始写入顺序。

提前致谢。

0 投票
0 回答
34 浏览

c# - 使用 IChangeToken 传递更改源数据的自定义 CosmosDB 配置提供程序

我正在实施一个自定义配置提供程序,以使用https://docs.microsoft.com/en-us/dotnet/core/extensions/custom-configuration-provider上的指南提供存储在我的 Azure Cosmos Db 中的配置设置。但是,除了本指南中的内容之外,我还想实现reload-on-change功能。

为此,我使用此处描述的提要处理器逻辑为我的 Cosmos Db 创建了一个“Watcher”类:https ://docs.microsoft.com/en-us/azure/cosmos-db/sql/change-feed -处理器。Watcher 给了我一个 IChangeToken,我将它传递给 ChangeToken.OnChange 方法,如下所示,并在新数据到达时设置它:

这很好用,但我的问题是我使用 ChangeFeedProcessor 实现的 Watcher 确切知道在调用它时更改了哪些项目。然而,在“Load(...)”调用中,我正在重新加载所有设置,并再次调用我的 Cosmos Db。

我传递有关“发生了什么变化?”的数据的正确方法是什么?当令牌更改为我的 ConfigurationProvider 时,我不需要重新查询我的数据库来获取所有设置?

0 投票
1 回答
68 浏览

azure-cosmosdb - 在 Cosmos DB 中生成序列

需要创建序列,以便代码当前在做什么 select max(name) from table where item1 = '' and item2= '' and item3 = '' 。获取最大值后,它会插入从最大值开始的元素。但这会导致并发问题。

注意:查询将始终在同一个分区中执行

目前我有两种方法:

一种是创建一个序列表,其中将包含 ID 和序列作为列。序列列将包含该 ID 的最后一个序列号。这将使用乐观并发进行更新。

第二个是使用存储过程。

但是,如果存在的话,我仍然在寻找一些更好的方法。