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

java - 如何将 Azure Cosmos DB 中的拉模型与 Java 结合使用?

拉模型的文档中,您可以看到拉模型仅适用于 .NET。是否有可能在 Java 中模拟 FeedIterator?是否有任何支持此功能的测试版?

0 投票
1 回答
808 浏览

mongodb - Azure Cosmos DB 的 MongoDB API 中的更改流支持有多可靠?

描述

我正在开发一个 ASP.NET Core 3.1 Web 应用程序,该应用程序需要跟踪/响应对 Azure Cosmos DB(版本 3.6)托管的 MongoDB 数据库所做的更改。为此,我使用了Change feed support

更改非常频繁:集合中的单个条目每秒更新约 10 次。

为了追踪对集合所做的更改,我使用以下代码将受影响的条目转储到文件中(这仅用于测试目的)。

问题

在观察输出时,我注意到对集合进行的每次更新都没有触发更改提要。我可以通过将生成的输出与 MongoDB Cloud 托管的数据库进行比较来确认这一点。

问题

  1. Azure Cosmos DB 的 MongoDB API 中的更改流支持有多可靠?

  2. API 能否保证最新的更新始终可用?

  3. 我无法自己处理“本地”数据库的“oplog.rs”集合,API 是否以任何方式支持这一点?这甚至受到鼓励吗?

  4. 收集吞吐量 (RU/s) 是否以某种方式与更改事件频率相关?

最后的想法

我的理解是频繁的更新会限制系统,并且更改源根本无法处理日志中的所有事件(而是定期扫描它)。但是,我想知道依靠这种机制有多安全,并确保不会错过对数据库进行的任何关键更新。

如果更改提要支持无法对事件处理频率做出任何保证并且无法处理“oplog.rs”,则唯一的选择似乎是定期轮询数据库。

如果我错了,请纠正我,但切换到轮询会极大地影响性能,并会导致解决方案不可扩展。

0 投票
1 回答
33 浏览

azure - 如何将 changefeeds Monitored Collection 名称放入我的 ChangesHander - Containers.ChangesHander(Azure 宇宙 v3)

我有一项服务,它产生了许多 Changefeeds 来监视许多不同的 Cosmos DB 集合。在 v1 或 2 中,ChangefeedObserver 类包含 ChangefeedObserverContext,我可以从中提取集合名称。

在 v3 中,不是在处理器中传递类型,而是传递一个委托方法,其签名不再包含上下文

MS Docs Container.ChangesHandlerDelegate

更改 Feed 处理器

在上面的代码中,我有一个创建 Changefeed 的基本方法(通过计时器启动),以及将处理发送到更大的类以执行操作的委托方法,具体取决于受监视的集合。

那么,如何将这个changefeeds Monitored Collection 值放入 ChangesHander 中?

0 投票
1 回答
127 浏览

azure-cosmosdb - Azure cosmos changefeed 处理器选项

Changefeed 处理器选项在这里得到了很好的描述-

我对此有几个问题-

  1. leaseRenewInterval:假设一个实例无法在 17 秒内更新其租约(默认租约更新间隔),是否会从该实例中删除该租约?或者饲料会等到leaseExpirationInterval从它删除租约并给它一个机会在 60 秒内重新获得租约?

  2. leaseRenew默认情况下会发生在 之后,checkpoint还是两者都是独立的?即leaseRenew 可以发生在单独的线程之后leaserenewinterval,而其他线程仍在批处理?

  3. 我们已经看到了错误:failed to checkpoint for owner 'null' with continuation token.这怎么会发生?为什么所有者可以成为null

  4. 我们也看到了异常LeaseLostException。即使 pod/实例没有关闭,这也会发生吗?我们不期望任何负载平衡,因为只有 1 个物理分区,但希望我们的系统具有容错性,因此我们确实有多个实例在运行,除 1 之外的所有其他实例将始终等待获取租约。

  5. 在少数情况下,我们可以同时看到 3 个 Pod/实例具有相同物理分区的租约,或者我们可以说,它们获得了相同的租约。(我们最多可以有 1 个物理分区,(文档的 TTL 为 3 天,存储空间更少,因此我们预计不会超过 1 个物理分区))。这怎么可能发生?

编辑:

当前的设置:

ChangeFeed 处理器版本:

  • 我们在我们的 Maven 中使用下面

所以,我可以假设 CFP 版本是4.8.0

0 投票
1 回答
346 浏览

c# - 如何区分 Cosmos DB 更改源中的插入和更新

我确实从该资源中获得了 Cosmos DB 更改源的代码示例

我能够成功编译和运行代码。

这是更改提要调用的代码

这是对更改提要执行的操作的代码

我确实看到了如何在插入时触发该操作;但是,有没有办法判断是否对更新采取了行动。有没有办法分辨哪个是哪个,从另一个中分辨出来。有没有办法获得有关更新/添加数据的更多详细信息

非常感谢您提前

0 投票
1 回答
162 浏览

spring-boot - Spring Boot - 如果重新生成主键,Azure Cosmos DB Change Feed 进程将失败

如何在运行状态下更新更改提要过程中的 cosmos 主密钥。

我在 Spring Boot 应用程序中使用更改提要过程,它工作正常。但是如果重新生成主键,进程作为后台进程(异步)运行,无法捕获异常并使用辅助键更新键或重新启动进程,则会失败。以下是详细信息

Pom.xml 中的依赖项

代码片段

错误:

0 投票
0 回答
21 浏览

java - 在 Java/Spring 启动中,如何每次使用 Azure Key Vault 中的最新机密开发 Azure Change Feed 流程

根据 Microsoft 规范,我们必须在每个特定时期重新生成密钥,我想在 Java/Spring 启动应用程序中开发一个 Change Feed 流程,它应该从 Key vault 为每次轮询获取最新密钥

0 投票
0 回答
101 浏览

azure-cosmosdb - 如何解释 CosmosDB Mongo API 中 ChangeStream 的恢复令牌?我们可以仅使用恢复令牌(或 changeStreamDocuments)来订购操作吗?

我在 Azure Cosmos DB 上运行 Mongo API(4.0 版)。我使用 Cosmos 的ChangeStream从 CosmosDB Mongo API 集合中捕获事件。Cosmos DB 的 ChangeStream 文档类似于 Mongo DB 的文档。

CosmosDB 的 Mongo API内部resumeToken的数据ChangeStreamDocument是一个 BsonDocument,其中包含两个字段 (_datakind),如下所示:

"_data" -> {BsonBinary@2892} "BsonBinary{type=0, data=[123, 34, 86, 34, 58, 50, 44, 34, 82, 105, 100, 34, 58, 34, 88, 48, 107, 66, 65, 80, 122, 108, 106, 120, 115, 61, 34, 44, 34, 67, 111, 110, 116, 105, 110, 117, 97, 116, 105, 111, 110, 34, 58, 91, 123, 34, 70, 101, 101, 100, 82, 97, 110, 103, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 69, 102, 102, 101, 99, 116, 105, 118, 101, 32, 80, 97, 114, 116, 105, 116, 105, 111, 110, 32, 75, 101, 121, 32, 82, 97, 110, 103, 101, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 123, 34, 109, 105, 110, 34, 58, 34, 34, 44, 34, 109, 97, 120, 34, 58, 34, 70, 70, 34, 125, 125, 44, 34, 83, 116, 97, 116, 101, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34, 99, 111, 110, 116, 105, 110, 117, 97, 116, 105, 111, 110, 34, 44, 34, 118, 97, 108, 117, 101, 34, 58, 34, 92, 34, 51, 49, 92, 34, 34,125, 125, 93, 125]}"

“_kind”-> {BsonInt32@2928} “BsonInt32{value=1}”

转换 的二进制数据_data产生以下字符串。

{"V":2,"Rid":"X0kBAPzljas=","Continuation":[{"FeedRange":{"type":"有效分区键范围","value":{"min":"", "max":"FF"}},"State":{"type":"continuation","value":""31""}}]}

Rid是集合的资源 id 。value字段中的数据State似乎随着每个操作的更改流文档而增加。

我有一个两部分的问题

  • 给定使用本文档中的 ChangeStream 检索到的任何两个操作,是否可以比较它们ResumeToken的 s(或ChangeStreamDocuments)以建立它们之间的发生之前的关系?如果可以使用valueinState字段,是否保证每次操作都会单调增加?

  • 虽然在clusterTime里面有命名ChangeStreamDocument的字段,但该字段总是有一个空值。是否可以使用 CosmosDB 的 ChangeStream 获取与操作关联的时间戳?

0 投票
1 回答
92 浏览

azure - Cosmos DB 更改源源的 Azure 函数不会运行:找不到作业函数

我正在编写一个订阅 Cosmos DB 更改源的 Azure Function 应用程序。当我使用 Visual Studio 2019 在本地运行应用程序 (F5) 时,我在 CLI 上收到以下错误:

Azure Function Core Tools 报告“未找到工作职能”。

整个代码片段如下:

我试图在应用程序参数上设置“--verbose”以查看日志输出,但它引发了错误。

添加“--verbose”会引发错误。

将“--verbose”添加到应用程序参数的结果。

我也尝试设置“start --verbose”,但它也抛出了一个错误。

添加“start --verbose”也会引发错误。

将“start --verbose”添加到应用程序参数的结果。

我不知道此时我还能检查什么。应用程序无法启动,并且根据我所做的搜索,我看不到日志输出。

任何帮助,将不胜感激。蒂亚!

0 投票
1 回答
140 浏览

c# - Azure Cosmos 更改源馈入事件网格

我正在使用 cosmos DB,并且希望使用更改提要通过 azure 事件网格将更改发送到对更改感兴趣的其他数据库或侦听器。

我确信 cosmos DB 更改提要不能直接通过管道传输到事件网格中,但是如何使更改提要成为事件源以通过管道传输到事件网格中。

任何输入将不胜感激。