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

mongodb更改流事件何时从流中清除,mongodb,changestream,Mongodb,Changestream,我知道,当mongo的任何受关注实体被更改/添加时,mongo会将这些更改记录在更改流中,应用程序可以监听这些更改流 当单个变更流事件被清除时,变更流的最大容量是多少。由于最大容量限制,是否存在日志在通知订阅者之前从变更流中删除的负面场景 我在他们的官方网页上找不到任何此类数据: 变更流使用oplog作为其数据的基础。因此,“最大容量”基于oplog的大小(请参阅) 只要您遵循变更流,您就会收到实时变更通知。在这种情况下,oplog的大小不是问题,因为您正在使用发生的更改 然而,变更流可以是指向

我知道,当mongo的任何受关注实体被更改/添加时,mongo会将这些更改记录在更改流中,应用程序可以监听这些更改流

当单个变更流事件被清除时,变更流的最大容量是多少。由于最大容量限制,是否存在日志在通知订阅者之前从变更流中删除的负面场景

我在他们的官方网页上找不到任何此类数据:
变更流使用oplog作为其数据的基础。因此,“最大容量”基于oplog的大小(请参阅)

只要您遵循变更流,您就会收到实时变更通知。在这种情况下,oplog的大小不是问题,因为您正在使用发生的更改

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

无法恢复更改流,因为找不到恢复令牌。{{u数据:}


在这一点上,如何继续取决于应用程序。

我有一个不断增加的数据用例,没有删除,只有插入和更新。我侦听更改流以在内存缓存中突发我的应用程序。由于应用程序是分布式的且可自动伸缩的,因此更改流的侦听器数量是动态的,因此我不想从我的应用程序中删除更改流中的事件。我担心过一段时间我的mongo oplog会被填满。当op日志填满时,mongo使用什么策略?我更愿意为我的用例使用FIFO删除策略,通读它解释了关于oplog的所有需要了解的内容。oplog基本上是一个循环缓冲区,因此它基本上是一个FIFO结构。