我了解到,当mongo的任何受监视实体发生更改/添加时,mongo会将这些更改记录在变更流中,应用程序可以侦听。
何时清除单个变更流事件,变更流的最大容量是多少。是否存在任何负面情况,由于最大容量限制,在将日志通知给订户之前将其从更改流中删除。
我在他们的官方页面上找不到任何此类数据: https://docs.mongodb.com/manual/changeStreams/
答案 0 :(得分:2)
变更流将oplog用作其数据的基础。因此,“最大容量”取决于您的oplog的大小(请参见SERVER-13932)。
只要您关注变更流,就应该实时收到有关变更的通知。在这种情况下,oplog的大小不是问题,因为您在更改时就在使用它。
但是,更改流可以是resumed using a resume token,它指向操作日志中的特定时间戳。当操作日志已翻转时,此恢复令牌现在无效。尝试使用无效的恢复令牌恢复更改流将导致错误:
resume of change stream was not possible, as the resume token was not found. {_data: <the invalid resume token>}
这时,取决于应用程序如何进行。