Bull-Ish Your Queues With BullMQ

This ad is not shown to multipass and full ticket holders
React Advanced
React Advanced 2025
November 27 - 1, 2025
London, UK & Online
We will be diving deep
Learn More
In partnership with Focus Reactive
Upcoming event
React Advanced 2025
React Advanced 2025
November 27 - 1, 2025. London, UK & Online
Learn more
Bookmark
Rate this content

¿Alguna vez te has enfrentado a una situación en la que necesitabas desesperadamente una cola, pero las opciones tradicionales estaban fuera de la mesa? Mi equipo se encontró con este problema exacto. Después de mucha experimentación, descubrimos una solución única utilizando Redis y BullMQ. Esta charla compartirá nuestro viaje, desde la frustración de las opciones de colas limitadas hasta la construcción de un sistema altamente escalable y ultrarrápido. Te mostraremos cómo superamos los obstáculos y logramos resultados increíbles con Redis y BullMQ.

This talk has been presented at Node Congress 2025, check out the latest edition of this JavaScript Conference.

Luca Del Puppo
Luca Del Puppo
23 min
17 Apr, 2025

Comments

Sign in or register to post your comment.
  • Va Da
    Va Da
    P4
    Ah, queue in Node.js, nice
Video Summary and Transcription
Hola, y bienvenidos a esta charla donde hablo sobre colas y Cola Booleana. Hoy quiero contarles la historia de un equipo que trabajaba en un proyecto para un cliente que necesitaba manejar una cola simple. Se acercaron al equipo de plataforma en busca de ayuda, pero solo les dieron una cola, que no era suficiente. El equipo tuvo que encontrar una solución utilizando las herramientas que ya tenían, como Posgas SQL y Elastic Cache. La primera solución posible fue pgboss. Si no conoces pgboss, es un paquete npm simple que puedes instalar en tu aplicación de node y básicamente crear una especie de sistema de colas sobre Posgas SQL. Y exponer una API para llamar a las colas y manejar las colas dentro de tu aplicación. La única solución que quedaba era Elastic Cache y Redis. Y en este escenario particular, lo que brilla es BoolMQ. BoolMQ es una biblioteca npm simple que implementa un sistema de colas rápido y robusto sobre Redis. Se puede usar para desacoplar tu código y crear una arquitectura de microservicios. Puedes crear un flujo dependiendo de diferentes colas y crear el resultado basado en el resultado de cada cola. De forma predeterminada, BoolMQ proporciona paralelismo y concurrencia. Además, puedes tener OpenTelemetry configurado y un panel de UI para el monitoreo de colas. Para crear una cola PullMQ, proporciona un nombre y una cadena de conexión a Redis. El código incluye un método run que empuja continuamente nuevas temperaturas a la cola. El consumidor utiliza un trabajador para manejar datos y ejecutar consultas. Cierra la conexión al cerrar el proceso de Node.js. Ejecuta el publicador para empujar datos y el consumidor para recibir datos. Crea múltiples publicadores o consumidores según sea necesario. La segunda demostración muestra cómo configurar OpenTelemetry en tu entorno de Node.js para rastrear lo que sucede dentro de tus colas. Usa BullMQ Hotel y la instancia BullHotel para rastrear la telemetría de tus colas. La última demostración muestra el uso de Fastify con BullMQ para crear una UI para gestionar colas. Puedes hacer lo que quieras con OpenTelemetry. La última demostración presenta una aplicación Fastify dentro de la UI. Fastify es un marco simple para manejar APIs de Node.js. Configura Fastify utilizando el adaptador Fastify expuesto por BullMQ, BullBoard. Expón la API '/UI' para mostrar la UI en el servidor. La UI te permite interactuar con las colas y ver los elementos completados. BullMQ es una solución sencilla para manejar colas y se puede escalar fácilmente utilizando Redis. En la mayoría de los casos, usar una cola es necesario y está bien documentado. Sin embargo, depende de Redis, lo que significa pérdida de datos si Redis falla. Además, necesitarás aprender otra biblioteca. ¡Gracias por escuchar!
Available in English: Bull-Ish Your Queues With BullMQ

1. Introducción a las Colas

Short description:

Hola, y bienvenidos a esta masterclass donde hablo sobre colas y Cola Booleana. Hoy quiero contarles una historia de un equipo que trabajaba en un proyecto para un cliente que necesitaba manejar una cola simple. Se acercaron al equipo de plataforma en busca de ayuda, pero solo les dieron una cola, lo cual no era suficiente. El equipo tuvo que encontrar una solución utilizando las herramientas que ya tenían, como Posgas SQL y Elastic Cache. La primera solución posible fue pgboss.

Hola, y bienvenidos a esta masterclass donde hablo sobre colas y Cola Booleana. Así que, primero que todo, comencemos desde quién soy. Soy Luca Del Pupo, un desarrollador de software senior en NearForm, un amante de JavaScript y TypeScript. En mi tiempo libre, trato de administrar mi canal de YouTube, pero sin éxito en el último año. Y también me encanta escribir publicaciones técnicas para TechP. También me encanta correr y hacer senderismo en mis hermosas Dolomitas, y me encanta cuidar a los gatos de mis vecinos.

Por cierto, comencemos con el tema. Así que hoy quiero contarles una historia, una historia de un equipo, uno de los mejores equipos que he visto en mi vida. Así que este equipo estaba trabajando en un proyecto, en un proyecto para un cliente, y en algún momento necesitaban manejar una cola simple. Una cola simple, así que necesitaban entender cómo manejar un sistema de colas en su proyecto. Así que no eran los dueños de la infraestructura, así que empezaron a hablar con el equipo de plataforma. Así que fueron al equipo de plataforma para pedir ayuda para tener una especie de sistema de colas dentro de su entorno. El equipo de plataforma comenzó a pensar en las posibilidades reales y, básicamente, el producto se ejecutaba dentro de AWS. Decidieron darles una cola AWS SQS, pero con un problema simple. Solo una cola.

Y no era suficiente para el equipo, porque sí, pidieron una cola, pero no solo una cola. Necesitaban una especie de sistema de colas que pudiera manejar diferentes colas dentro del proyecto y ayudarles a desacoplar o descentralizar algunas cosas. Así que este es básicamente el resultado. El equipo siempre estuvo ahí para satisfacer su necesidad y alcanzar su objetivo de obtener una cola, pero el equipo de plataforma dijo, sí, puedo darte una cola, pero solo una. Así que durante algunos días, la noche de este equipo fue un poco una pesadilla en realidad. Una lista de pesadillas durante los días siguientes. Así que esto es básicamente lo que sucedió durante la noche.

Cada compañero piensa que el compañero que es miembro del equipo estaba pensando en, no sé, algo más. Pero en realidad, cada compañero de equipo estaba pensando en cómo podemos manejar este sistema de colas dentro de WK. Así que en algún momento, empezaron a pensar en lo que ya tenían dentro del proyecto. Y ya había dos herramientas diferentes que podían usar para crear una especie de sistema de colas alrededor del proyecto. Una era Posgas SQL para la base de datos, y la otra era Elastic Cache, la implementación de Redis dentro de AWS. Ya tenían estas dos herramientas, así que no pidieron nada más al equipo de plataforma. Pero lo único que tenían que entender es cómo podían manejar un sistema de colas dentro de una de estas dos herramientas. Así que la primera solución posible fue pgboss.

2. Usando pgboss y BoolMQ

Short description:

Si no conoces pgboss, es un paquete npm simple que puedes instalar en tu aplicación node y básicamente crear una especie de sistema de colas sobre Posgas SQL. Y exponer una API para llamar a las colas y manejar las colas dentro de tu aplicación. La única solución que queda es Elastic Cache y Redis. Y en este escenario particular, lo que brilla es BoolMQ. BoolMQ es una biblioteca npm simple que implementa un sistema de colas rápido y robusto sobre Redis. Puede ser utilizado para desacoplar tu código y crear una arquitectura de microservicios.

Si no conoces pgboss, es un paquete npm simple que puedes instalar en tu aplicación node y básicamente crear una especie de sistema de colas sobre Posgas SQL. Y exponer una API para llamar a las colas y manejar las colas dentro de tu aplicación. Esta herramienta requiere un esquema de base de datos específico para manejar. Es una buena práctica y una mala práctica tener un esquema de base de datos específico para manejar todas las colas y no usar el común, para evitar mezclar los datos reales con las tablas de colas. Y esto significa que si quieres usar pgboss, aumentas la carga dentro de la base de datos.

Y uno de los problemas del equipo era que la base de datos ya estaba bajo presión en algunos momentos del día. Así que aumentar nuevamente la carga de la base de datos puede ser otra pesadilla para ellos. Así que decidieron evitar usar esta solución. Así que la única solución que queda es Elastic Cache y Redis. Y en este escenario particular, lo que brilla es BoolMQ. BoolMQ es una biblioteca npm simple que implementa un sistema de colas rápido y robusto sobre Redis. Y puedes usarlo para desacoplar tu código, puedes usarlo para básicamente crear una arquitectura de microservicios alrededor de tu aplicación, o cosas como esta. Y la API es realmente, realmente directa.

Solo una nota rápida. Hay dos implementaciones de bool. El bool sin mq es el más antiguo. Y funciona en modo de mantenimiento y también funciona muy bien en la versión actual de Redis sin ningún problema. Pero esta implementación no soporta lo mismo. BoolMQ es la nueva. La más rápida. Y básicamente esto utiliza el stream de Redis. Si no recuerdo mal, funciona desde Redis 6 en adelante. Y es la versión actual de BoolMQ. Así que si tienes una versión más antigua de Redis, tienes que usar bool, de lo contrario puedes usar BoolMQ. Si quieres migrar de uno a otro, no es simple porque la API ha cambiado, pero es factible sin ningún problema. Por cierto, tenemos la característica expuesta por BoolMQ. Así que BoolMQ, obviamente, expone colas. Así que puedes crear colas, agregar elementos a las colas y hacer todas las cosas que conoces con la cola. Luego, lo que puedes hacer es, usando el worker, puedes manejar los datos dentro de las colas para desencolar todos tus datos. Luego también puedes crear un trabajo usando BoolMQ y Redis.