Skip to content
Back to skills

Bull Bullmq Nestjs

ASecurity

Patrones de colas de tareas asíncronas con Bull/BullMQ en NestJS para producción. Usar PROACTIVAMENTE cuando se trabaje con jobs programados, recordatorios, notificaciones asíncronas, procesamiento en background, o cualquier tarea que no deba ejecutarse de forma síncrona en el ciclo de request/response. Activar siempre que aparezcan las palabras clave: Bull, BullMQ, @BullModule, @Processor, @Process, @OnQueueFailed, addJob, Queue, Worker, jobs, colas, tareas programadas, delayed jobs, recorda...

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 12, 2026
developmenttypescriptgogcpgit

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill bull-bullmq-nestjs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bull Bullmq Nestjs?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bull Bullmq Nestjs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-bull-bullmq-nestjs/badge)](https://www.skillsdirectory.com/skills/aibot88-bull-bullmq-nestjs)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bull-bullmq-nestjs
description: >
  Patrones de colas de tareas asíncronas con Bull/BullMQ en NestJS para producción.
  Usar PROACTIVAMENTE cuando se trabaje con jobs programados, recordatorios, notificaciones
  asíncronas, procesamiento en background, o cualquier tarea que no deba ejecutarse de forma
  síncrona en el ciclo de request/response. Activar siempre que aparezcan las palabras clave:
  Bull, BullMQ, @BullModule, @Processor, @Process, @OnQueueFailed, addJob, Queue, Worker,
  jobs, colas, tareas programadas, delayed jobs, recordatorio programado, notificación asíncrona,
  background job, retry, dead letter queue, o colas con Redis en NestJS.
  También activar para la transición Bull (desarrollo) → Cloud Tasks (producción GCP).
---

# Bull / BullMQ + NestJS — Colas de Tareas Asíncronas

Guía completa de implementación de colas con Bull/BullMQ en NestJS. Cubre configuración,
processors, jobs programados con delay, retry, dead letter queue, monitorización y la
estrategia de migración de Bull (desarrollo local) a Cloud Tasks (producción GCP).

## Referencias disponibles

Lee el archivo correspondiente cuando necesites profundidad en un área específica:

- `references/setup-and-config.md` — Instalación, BullModule, Redis, configuración por entorno
- `references/producers.md` — Servicios que encolan jobs: QueueService, addJob, delayed jobs
- `references/processors.md` — Workers: @Processor, @Process, manejo de errores, eventos de cola
- `references/reminder-pattern.md` — Patrón completo de recordatorio de cumpleaños (Algoritmo 3 HADA)
- `references/notification-pattern.md` — Cola de notificaciones FCM con retry y token cleanup
- `references/cloud-tasks-migration.md` — Migración de Bull a GCP Cloud Tasks en producción

---

## Cuándo usar cada referencia

| Tarea                                                  | Referencia                 |
| ------------------------------------------------------ | -------------------------- |
| Configurar Bull/BullMQ por primera vez en el proyecto  | `setup-and-config.md`      |
| Crear un servicio que añade jobs a la cola             | `producers.md`             |
| Implementar el worker que procesa los jobs             | `processors.md`            |
| Implementar Algoritmo 3 (recordatorios de cumpleaños)  | `reminder-pattern.md`      |
| Implementar envío asíncrono de notificaciones push FCM | `notification-pattern.md`  |
| Configurar Cloud Tasks para producción en GCP          | `cloud-tasks-migration.md` |

---

## Reglas críticas (siempre en contexto)

### 1. Bull para desarrollo, Cloud Tasks para producción

```typescript
// La lógica del job es la misma; solo cambia el mecanismo de scheduling
// Ver references/cloud-tasks-migration.md para la estrategia de abstracción
```

### 2. Jobs idempotentes — deben poder ejecutarse más de una vez sin efectos secundarios

```typescript
// ✅ Siempre verificar el estado actual antes de ejecutar
async processReminder(job: Job<ReminderJobData>) {
  const profile = await this.profileRepo.findById(job.data.profileId);
  // Si ya se procesó o fue cancelado, salir silenciosamente
  if (!profile || profile.reminderScheduledAt?.getTime() !== job.data.scheduledAt) {
    return; // Job obsoleto (fue reprogramado), ignorar
  }
  await this.sendNotification(profile);
}
```

### 3. Un job por (profileId + año) para evitar duplicados de recordatorio

```typescript
// jobId determinístico: si ya existe, Bull lo reemplaza
const jobId = `reminder:${profileId}:${year}`;
await this.queue.add(jobData, { jobId, delay, removeOnComplete: true });
```

### 4. Nunca bloquear el event loop en un processor — todo async/await

```typescript
// ❌ Operación síncrona larga en processor
@Process('send-notification')
handle(job: Job) {
  const result = someSyncHeavyOperation(); // Bloquea el worker
}

// ✅ Todo asíncrono
@Process('send-notification')
async handle(job: Job) {
  const result = await someAsyncOperation();
}
```

### 5. Retry con backoff exponencial — nunca retry inmediato

```typescript
await queue.add(data, {
  attempts: 3,
  backoff: { type: 'exponential', delay: 1000 }, // 1s, 5s, 25s
});
```

---

## Fuentes y documentación oficial

- **BullMQ Docs**: https://docs.bullmq.io/
- **Bull Docs (legacy, compatible)**: https://github.com/OptimalBits/bull/blob/master/REFERENCE.md
- **@nestjs/bull Docs**: https://docs.nestjs.com/techniques/queues
- **BullMQ + NestJS Guide**: https://docs.bullmq.io/patterns/nestjs
- **GCP Cloud Tasks Docs**: https://cloud.google.com/tasks/docs
- **Cloud Tasks + NestJS**: https://cloud.google.com/tasks/docs/creating-http-target-tasks
- **Bull Board (dashboard)**: https://github.com/felixmosh/bull-board
- **Redis Docs**: https://redis.io/docs/

Files in this skill

  • SKILL.md4.7 KB
  • source.json1.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.