Hacer esto con fuertes garantías es difícil pero no imposible. Escribí sobre los detalles de una solución aquí:https://www.alechenninger.com/2020/05/building-kafka-like-message-queue-with.html
Los ejemplos están en Java pero lo importante es el algoritmo.
Todo se reduce a algunas técnicas:
- Cada proceso intenta obtener un bloqueo
- Cada cerradura (o cada cambio) tiene una ficha de esgrima asociada
- El procesamiento de cada cambio debe ser idempotente
- Mientras se procesa el cambio, el token se usa para garantizar actualizaciones ordenadas y efectivas una sola vez.
Más detalles en la publicación del blog.