Change Streams permiten observar cambios confirmados en una colección, database o deployment sin leer directamente el oplog. El servidor produce eventos con un que permite continuar después de desconexiones mientras la historia necesaria siga disponible.
Guardar el token antes del efecto puede perder eventos. Guardarlo después puede repetir el último evento si el proceso falla; por eso el consumidor debe ser idempotente.
Según el caso se utilizan opciones como resumeAfter, startAfter o un tiempo de inicio compatible. El token depende de la historia disponible. Si el oplog ya no contiene el punto requerido, no puede reanudarse desde allí y se necesita reconciliación completa.
En updates, el evento básico puede incluir solo campos modificados. updateLookup solicita el documento actual después del cambio.
Esto añade una lectura y el documento puede haber cambiado otra vez antes del lookup. No lo interpretes necesariamente como una snapshot exacta del instante del evento.
Cuando están habilitadas, ciertas configuraciones permiten acceder a la imagen anterior o posterior. Tienen costes de almacenamiento y retención y dependen de versión. Verifica disponibilidad antes de diseñar auditoría sobre ellas.
Los eventos tienen orden dentro del stream observado, pero particionar consumo, combinar streams o enviar a otros sistemas puede cambiarlo. Conserva versión o cluster time cuando el destino necesita rechazar eventos antiguos.
No sustituyen automáticamente Kafka, RabbitMQ u otro broker cuando necesitas retención larga, replay arbitrario, múltiples políticas de entrega o desacoplamiento operacional independiente.
En un cluster sharded, mongos combina eventos de shards. Cambios de topología, resharding y transacciones distribuidas añaden complejidad. Usa drivers compatibles y prueba failovers.
El usuario necesita privilegios de lectura y change stream apropiados. La pipeline debe filtrar tenants sin exponer datos. No registres documentos completos si contienen secretos.
Change Streams ofrecen un stream reanudable sobre cambios confirmados, no una cola infinita ni exactly-once. La confiabilidad depende de resume tokens, oplog window, consumidores idempotentes, backpressure y reconciliación. Para semántica de negocio fuerte, combina con outbox.
Comprueba lo aprendido
¿Qué contiene un resume token?
¿Cuándo debes guardarlo?
¿Por qué pueden repetirse eventos?
¿Qué limita la reanudación?
¿Qué diferencia existe entre Change Stream y outbox?