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

353
Views
BullMQ - Cola de trabajos de persistencia y gestión de trabajos entre reinicios del servidor

Pocos antecedentes de la tarea: estoy construyendo un sistema de recuperación de carritos abandonados para Shopify. Después de que un usuario realiza un pago, Shopify llama a nuestro webhook y el webhook pone en cola esa solicitud como trabajo con un retraso de 5 minutos en una cola A. Cuando el trabajador comienza a procesar ese trabajo, verifica si ese pago ya se pagó o no. Si aún no se ha pagado, envía un mensaje de recuperación del carrito al usuario.

Estoy usando Node.js, Express.js, Redis y BullMQ para implementar el servidor y el sistema de colas. He intentado pasar por ejemplos básicos de BUllMQ. En la web, no pude encontrar algunos ejemplos avanzados sobre cómo usar esto en el sistema de nivel de producción.

En este momento, estoy atascado con estas siguientes preguntas:

  1. Dado que Redis es una base de datos en memoria, debo guardar todos los trabajos entrantes en mi colección MongoDB, inicialmente con el estado PENDIENTE y escuchar el evento de finalización para cambiar ese estado a COMPLETADO en la base de datos. Cada vez que mi servidor se reinicia, busco todos los trabajos con estado PENDIENTES y los agrego a la cola. De esta manera podemos recuperar nuestros trabajos, incluso si Redis se cae o se reinicia. Mis preguntas son: ¿Tiene sentido hacer tal cosa en la aplicación de nivel de producción? ¿Debería guardar trabajos en MongoDB? & ¿Qué otra precaución debo tomar para implementar este flujo?

  2. En este momento, Bull queue (llamémosle 'A') se está inicializando en el servidor express. Cada vez que se reinicia el servidor, la cola A también se inicializa. Mis preguntas son: ¿la reinicialización de la cola A elimina la cola A antigua en Redis? ¿Qué otras cosas puedo hacer alrededor de este problema?

Estaría muy agradecido por cualquier ayuda en esto.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Déjame darte algunas respuestas a tus preguntas:

Dado que Redis es una base de datos en memoria, debo guardar todos los trabajos entrantes en mi colección MongoDB, inicialmente con el estado PENDIENTE y escuchar el evento de finalización para cambiar ese estado a COMPLETADO en la base de datos. Cada vez que mi servidor se reinicia, busco todos los trabajos con estado PENDIENTES y los agrego a la cola. De esta manera podemos recuperar nuestros trabajos, incluso si Redis se cae o se reinicia. Mis preguntas son: ¿Tiene sentido hacer tal cosa en la aplicación de nivel de producción? ¿Debería guardar trabajos en MongoDB? & ¿Qué otra precaución debo tomar para implementar este flujo?

Aunque Redis es una base de datos en memoria, puede habilitar la persistencia en la mayoría de los proveedores de la nube o agregar la replicación como estándar en AWS Elasticache, lo que proporcionará un sistema muy confiable. Por supuesto, debe programar copias de seguridad para sus datos persistentes de Redis como con cualquier base de datos, lo que hacen todos los proveedores administrados de Redis. Lo importante es mantener alarmas en caso de que tu instancia de Redis se esté quedando sin memoria, ya que eso hará que tu cola deje de funcionar. Puede habilitar "removeOnComplete" para evitar la acumulación de trabajos que ya no le interesan.

En este momento, Bull queue (llamémosle 'A') se está inicializando en el servidor express. Cada vez que se reinicia el servidor, la cola A también se inicializa. Mis preguntas son: ¿la reinicialización de la cola A elimina la cola A antigua en Redis? ¿Qué otras cosas puedo hacer alrededor de este problema?

No, Bull/BullMQ están diseñados para que pueda crear instancias de la misma cola con la frecuencia que desee y no se perderán datos. De hecho, así es como puede escalar a sus trabajadores, instanciando tantos como desee para una cola determinada.

over 4 years ago · Santiago Trujillo 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!