Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

153
Vistas
Cómo asegurarse de que un trabajo se procese solo una vez con Firebase

Estoy agregando tareas como Documentos en una colección de Firestore. En el backend, tengo varias instancias sin estado de NodeJs que procesan estas tareas. Todas las instancias están escuchando cambios en tiempo real en la colección.

 firestore().collection('Tasks').onSnapshot(startTask, onError);

En este caso, se notificará a todas las instancias de NodeJs cuando se agregue una tarea. ¿Cómo puedo asegurarme de que solo uno de ellos procese la tarea? Pensé en usar firebase-queue pero parece que el proyecto está obsoleto. ¿Hay alguna manera de hacerlo sin módulos adicionales? Ejecutar la función NodeJs como Firebase no es una opción para mí.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Una posible solución sería agregar un indicador "tratado" al documento de Firestore a través de una Transacción .

Una instancia determinada de Node.js solo debe procesar esta tarea si no está marcada como tratada (por ejemplo, comprueba al comienzo de la transacción si el campo treated está establecido en true y, en ese caso, arroja un error; consulte los ejemplos). ). Y después de haberlo procesado con éxito, la instancia de Node.js marcará el documento como tratado (dentro de la misma Transacción, por supuesto).

Dado que usa un servidor Node.js (es decir, usa la biblioteca de cliente del servidor Node.js), la transacción coloca un bloqueo en el documento de tarea que está leyendo y, por lo tanto, las otras instancias no pueden modificar el documento. De esta manera, está seguro de que será tratado solo una vez.

Más detalles sobre la contención de datos en las bibliotecas del cliente del servidor aquí en el documento.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda