Reanudar con tokens
Sigue un change stream donde lo dejaste después de una caída o un reinicio.
Sigue un change stream donde lo dejaste después de que tu proceso se caiga o se reinicie. Cada evento lleva un token de reanudación que lo identifica.
Requisitos
- Un usuario con los privilegios
findychangeStreamsobre lo que vigilas. - Un sitio donde guardar el último token, como una colección propia.
Guardar el token de cada evento
JavaScript
for await (const cambio of db.pedidos.watch()) {
await procesar(cambio);
await db.tokens.updateOne({ _id: "pedidos" }, { $set: { token: cambio._id } }, { upsert: true });
}Reanudar
JavaScript
const guardado = await db.tokens.findOne({ _id: "pedidos" });
const stream = db.pedidos.watch([], { resumeAfter: guardado.token });startAfter funciona igual que resumeAfter y además sirve para seguir después de un evento invalidate.
Comprobar
Si paras el proceso, insertas un documento y lo vuelves a arrancar, el bucle recibe ese evento.
Problemas frecuentes
- No puedes reanudar porque el token es más antiguo que el historial que conserva el clúster, 24 horas por defecto. Sube
teselaHistoryRetentionsi tus procesos pueden estar parados más tiempo.