Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

155
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!