在查看集合上的更改流时,我可以指定一个恢复令牌(使用 resumeAfter)来获取 opslog 中该令牌之后的更改。如果在 opslog 中找不到此令牌(例如,客户端断开连接时间过长并提供旧令牌),会发生什么情况?
特别是,异步 mongodb java 驱动程序会检测到这种情况吗?如何检测?
对我来说,这个问题很重要,因为我必须检测我是否丢失了连接并且必须再次提取所有数据,或者可以依靠更改流从集合中获取所有更改。
该文件指出,
只要 oplog 有足够的历史记录来定位应用程序收到的最后一个操作,更改流是可恢复的。
但没有具体说明,否则会发生什么。我还发现阅读驱动程序源代码来确定客户端如何检测是否可以在 opslog 中找到最后一个令牌相当困难。