Cron jobs i schedulers amb BullMQ a Node.js

Aprèn a programar tasques recurrents amb BullMQ i Redis a Node.js. Inclou cron, schedulers, NestJS i bones pràctiques per a producció.

domingo, 5 de julio de 2026 • 3 min de lectura • Equip Q2BSTUDIO

Schedulers i cron amb BullMQ: alternativa robusta

En el desenvolupament d'aplicacions modernes amb Node.js, l'execució de tasques programades és un requisit habitual que es pot abordar de múltiples formes. Mentre que solucions com node-cron o @nestjs/schedule funcionen correctament en entorns d'una sola instància, presenten limitacions quan es necessita resiliència davant reinicis, deduplicació entre rèpliques o integració amb altres processos asíncrons. Aquí és on BullMQ es posiciona com una alternativa sòlida, recolzant-se en Redis per gestionar cues i schedulers de forma centralitzada.

BullMQ ofereix els anomenats Job Schedulers, que permeten encuar treballs recurrents seguint patrons cron o intervals fixos. A diferència dels temporitzadors en procés, aquests schedulers persisteixen a Redis, sobreviuen a caigudes del servidor i són compartits per múltiples workers. A més, hereten les capacitats de reintents, backoff i concurrència que BullMQ proporciona per a treballs puntuals. Això converteix els schedulers en una peça clau per a arquitectures escalables, on es requereix que el mateix worker processi tant tasques periòdiques com treballs sota demanda.

La implementació a Node.js és directa: es crea una cua i un worker compartint una connexió a Redis, i es registra el scheduler mitjançant el mètode upsertJobScheduler. Per exemple, un patró com */10 * * * * * genera un heartbeat cada deu segons, mentre que un cron amb fus horari específic permet executar neteges diàries a les 03:15 hora local. És fonamental recordar que el worker ha d'estar actiu per consumir els treballs; en cas contrari, s'acumularan a Redis. També és important evitar l'opció repeat obsoleta en favor de l'API de schedulers introduïda a BullMQ 5.16+.

En l'ecosistema NestJS, la integració es simplifica gràcies al mòdul @nestjs/bullmq. Es configura una connexió Redis global, es registra la cua com a proveïdor i s'injecta en un servei que implementa OnModuleInit per fer upsert dels schedulers en iniciar l'aplicació. Els treballadors es defineixen com a classes decorades amb @Processor, heretant de WorkerHost. Aquest patró garanteix que cada desplegament actualitzi els schedulers existents sense duplicar-los, mantenint la identitat estable mitjançant un identificador únic.

Entre les millors pràctiques operatives destaquen: tancar correctament el worker i la cua en senyals SIGINT/SIGTERM, utilitzar getJobSchedulers per inspeccionar els schedulers actius, i emprar removeJobScheduler per eliminar programacions obsoletes. És crucial no barrejar pattern i every en un mateix scheduler, i especificar el fus horari quan l'hora local és rellevant. Així mateix, sota càrregues elevades els intervals poden allargar-se perquè BullMQ programa el següent treball només quan l'anterior comença a processar-se.

En entorns empresarials, combinar BullMQ amb serveis cloud com AWS o Azure potencia l'escalabilitat i la resiliència. Per exemple, allotjar Redis a ElastiCache o Azure Cache for Redis, i desplegar els workers en contenidors orquestrats, permet gestionar pics de càrrega sense perdre treballs programats. A Q2BSTUDIO desenvolupem aplicacions a mida que integren aquests patrons, oferint solucions robustes per a automatització de processos i gestió de tasques crítiques. A més, les nostres capacitats abasten automatització de processos amb cues de missatges, intel·ligència artificial per a empreses, agents IA, ciberseguretat, i serveis d'intel·ligència de negoci amb Power BI, tot sobre infraestructures cloud AWS i Azure.

En resum, BullMQ Job Schedulers representen una evolució natural respecte als temporitzadors en procés quan es requereix fiabilitat, concurrència i observabilitat. El seu ús és especialment recomanat en arquitectures multi-instància i en combinació amb altres sistemes de cues. Des de Q2BSTUDIO, acompanyem les organitzacions en la implementació d'aquestes tecnologies, així com en el desenvolupament de programari a mida que integra schedulers, cloud, IA i business intelligence per impulsar la transformació digital.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.