mongodb 更改流事件何时从流中清除

When is mongodb change stream events cleared from the stream

我知道当 mongo 的任何被监视实体是 altered/added 时,mongo 将这些更改记录在更改流中,应用程序可以侦听。

什么时候清除单个change stream事件,change stream的最大容量是多少。是否存在任何负面情况,其中由于最大容量限制,日志在通知订阅者之前从更改流中删除。

我在他们的官方页面上找不到任何此类数据: https://docs.mongodb.com/manual/changeStreams/

更改流正在使用 oplog 作为其数据的基础。因此 "maximum capacity" 取决于您的 oplog 的大小(参见 SERVER-13932)。

只要您关注更改流,您就应该实时收到更改通知。在这种情况下,oplog 的大小不是问题,因为您正在消耗更改。

但是,更改流可以 resumed using a resume token 指向 oplog 中的特定时间戳。当 oplog 回滚时,此恢复令牌现在无效。尝试使用无效的恢复令牌恢复更改流将导致错误:

resume of change stream was not possible, as the resume token was not found. {_data: <the invalid resume token>}

至此,就看应用程序如何进行了。