2

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

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

1 回答 1

2

更改提要基于轮询而不是基于事件,但这取决于您使用增量模型轮询更改的频率。

处理器只跟踪它读取的每个分区的最高 LSN,并从该书签点开始请求下一批更改(按 LSN 顺序)。

每次更新文档时,其关联的 LSN 都会增加,因此,为了在更改提要中返回特定版本,更改提要处理器需要在更新文档之前请求包含该 LSN 的批次。

对于 Azure 函数,您可以减少feedPollDelay以减少错过更改的可能性

(可选)在所有当前更改都耗尽后,轮询分区以获取提要上的新更改之间的延迟时间(以毫秒为单位)。默认值为 5,000 毫秒或 5 秒。

如果您的更改非常接近,您可能仍然会错过它们。有一个“完全保真更改提要”选项会在某个时候返回所有更改,但我不确定如何进入预览版,或者它何时是 GA 并与 Azure 功能集成。

于 2021-01-30T12:50:25.253 回答