变更流的恢复令牌(Resume Token)精确控制与故障恢复
详解变更流的 resumeToken 机制,实现从指定位置恢复、多消费者分片等高级场景。 · 难度:入门 · +10XP
变更流的恢复令牌(Resume Token)精确控制与故障恢复
MongoDB Change Streams 提供了强大的实时数据追踪能力,但很多教程只讲基本订阅。本教程将带你掌握 resumeToken 的二进制结构、如何从上一个断点精确恢复,以及如何利用 resumeAfter 和 startAfter 参数实现不同粒度的消费控制。还会介绍当集群发生主从切换时,令牌如何保持有效,以及如何通过 $changeStreamSplitLargeEvent 处理超大变更事件。最后演示一个跨分片集群的容灾消费者示例。
const pipeline = [
{ $match: { 'fullDocument.status': 'active' } },
{ $project: { 'documentKey': 1, 'fullDocument': 1 } }
];
const resumeToken = ... // 从持久化存储中获取
const changeStream = collection.watch(pipeline, {
resumeAfter: resumeToken,
maxAwaitTimeMS: 1000
});
changeStream.on('change', (change) => {
// 处理变更,并保存新的 resumeToken
saveToken(change._id);
});