sickn33/bullmq-spécialiste

Expert BullMQ pour les files d'attente de tâches basées sur Redis, le traitement en arrière-plan et l'exécution asynchrone fiable dans les applications Node.js/TypeScript.

Qu'est-ce que bullmq-spécialiste ?

Cette compétence spécialisée aide les développeurs et les agents IA à concevoir, implémenter et optimiser des pipelines de traitement asynchrone fiables avec BullMQ et Redis. Elle couvre la configuration de files d'attente, l'ajout et le traitement de tâches, la gestion des répétitions et des erreurs, ainsi que la mise en place de workers et de planificateurs (schedulers). Idéale pour les applications Node.js/TypeScript nécessitant des files d'attente robustes, elle supporte les environnements locaux comme les déploiements sur Vercel, Serverless, Railway ou Docker. La compétence explique comment paramétrer les connexions Redis, définir des options de file d'attente (retards, tentatives, nettoyage automatique), et utiliser les événements et les flows pour des orchestrations complexes. Elle fournit également des exemples d'écouteurs d'événements, de gestion des jobs bloquants et de scraping web asynchrone, ce qui en fait un assistant complet pour la mise en œuvre de BullMQ en production.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/bullmq-specialist

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait bullmq-spécialiste ?

Expert BullMQ pour les files d'attente de tâches basées sur Redis, le traitement en arrière-plan et l'exécution asynchrone fiable dans les applications Node.js/TypeScript.

Pourquoi cette compétence est utile

Pour les développeurs travaillant avec des systèmes de files d'attente, le traitement asynchrone ou l'architecture orientée événements, BullMQ est une bibliothèque puissante mais complexe. Cette compétence aide les agents IA et les développeurs à comprendre et implémenter correctement BullMQ, des configurations de base aux patterns avancés.

Plateformes supportées

  • Node.js / TypeScript
  • Requiert une instance Redis (locale, Redis Cloud, Upstash, Railway, Docker)
  • Fonctionne avec des déploiements sans serveur (serverless) et des machines dédiées

Concepts clés couverts

1. Connexion Redis

import { ConnectionOptions } from 'bullmq';

const connection: ConnectionOptions = {
  host: 'localhost',
  port: 6379,
  password: 'optional'
};

2. Création d'une file d'attente

import { Queue } from 'bullmq';

const myQueue = new Queue('emails', { 
  connection,
  defaultJobOptions: {
    attempts: 3,
    backoff: { type: 'exponential', delay: 2000 },
    removeOnComplete: { age: 3600 * 24 },
    removeOnFail: { age: 3600 * 24 * 7 }
  }
});

3. Ajout de tâches (jobs)

await myQueue.add('send-welcome-email', {
  to: '[email protected]',
  template: 'welcome'
}, {
  delay: 5000,
  attempts: 2
});

4. Worker (consommateur)

import { Worker } from 'bullmq';

const worker = new Worker('emails', async job => {
  // Logique de traitement
  await sendEmail(job.data.to, job.data.template);
}, { 
  connection,
  concurrency: 10 
});

worker.on('completed', job => {
  console.log(`Tâche ${job.id} terminée`);
});

worker.on('failed', (job, err) => {
  console.error(`Tâche ${job.id} échouée:`, err);
});

5. Planificateur (Scheduler) pour tâches périodiques

import { QueueScheduler } from 'bullmq';

const scheduler = new QueueScheduler('notifications', { connection });
// Ajouter une tâche récurrente
await myQueue.add('daily-report', {}, {
  repeat: { pattern: '0 8 * * *' }
});

6. Gestion des échecs et tentatives

// Configuration des tentatives avec délai exponentiel
const job = await myQueue.add('process-payment', data, {
  attempts: 5,
  backoff: {
    type: 'exponential',
    delay: 1000
  }
});

7. Nettoyage automatique des tâches

const queue = new Queue('logs', {
  defaultJobOptions: {
    removeOnComplete: {
      count: 100,   // Garder les 100 plus récentes
      age: 3600      // OU supprimer après 1 heure
    },
    removeOnFail: {
      age: 3600 * 24 * 30 // Garder les échecs 30 jours
    }
  }
});

8. Files d'attente prioritaires

await highPriorityQueue.add('urgent-task', data, {
  priority: 1  // Priorité plus basse = exécution plus rapide
});

await lowPriorityQueue.add('background-task', data, {
  priority: 10
});

Cas d'utilisation pratiques

  1. Envoi d'emails en arrière-plan : Traitement asynchrone des files d'attente d'emails avec tentatives
  2. Traitement de paiements : Gestion fiable des transactions avec retry et backoff
  3. Génération de rapports : Planification de rapports quotidiens ou horaires
  4. Scraping web : File d'attente de tâches de scraping avec contrôle de concurrence
  5. Traitement de médias : Redimensionnement d'images, transcodage vidéo

Débogage et surveillance

// Obtenir l'état de la file d'attente
const counts = await queue.getJobCounts();
// { waiting: 5, active: 2, completed: 100, failed: 3, delayed: 1 }

// Récupérer les tâches échouées
const failedJobs = await queue.getFailed();

Bonnes pratiques

  • Toujours configurer removeOnComplete et removeOnFail pour éviter les fuites mémoire
  • Utiliser concurrency sur le worker pour le parallélisme
  • Configurer backoff pour les tâches qui peuvent échouer de manière transitoire
  • Utiliser des noms de files d'attente explicites (ex: 'emails', 'notifications', 'exports')
  • Gérer les erreurs proprement dans le worker (les exceptions non capturées marquent la tâche comme échouée)

Pièges courants

  • Oublier de configurer la connexion Redis (défaut localhost:6379, peut ne pas fonctionner en production)
  • Ne pas définir de limite de tentatives entraînant des retries infinis
  • Utiliser le même worker pour plusieurs types de tâches sans déduplication (utiliser des files séparées ou des noms de tâches)
  • Négliger la configuration de nettoyage (les tâches peuvent saturer la mémoire Redis)

Flux de travail avancés : Flows BullMQ

BullMQ prend en charge les workflows complexes via les Flows, permettant d'ajouter des tâches parent-enfant.

import { FlowProducer } from 'bullmq';

const flow = new FlowProducer({ connection });

const tree = await flow.add({
  name: 'finalize-order',
  data: { orderId: 123 },
  children: [
    {
      name: 'process-payment',
      data: { orderId: 123, amount: 49.99 },
      children: [
        {
          name: 'send-receipt',
          data: { orderId: 123, email: '[email protected]' }
        }
      ]
    },
    {
      name: 'inventory-check',
      data: { orderId: 123, items: ['item1', 'item2'] }
    }
  ]
});

Écouteurs d'événements globaux

const queueEvents = new QueueEvents('emails', { connection });

queueEvents.on('completed', ({ jobId }) => {
  console.log(`Tâche ${jobId} réussie`);
});

queueEvents.on('failed', ({ jobId, failedReason }) => {
  console.error(`Tâche ${jobId} échouée:`, failedReason);
});

Exemple d'utilisation de la compétence

Demandez à l'agent IA : "Configurez BullMQ avec une file d'attente prioritaire pour le traitement d'images avec un worker traitant 3 images simultanément et conservant l'historique des 100 dernières tâches terminées."

Ou : "Mettez en place un système de files d'attente avec une tâche principale qui planifie des tâches enfants pour l'envoi d'emails et la mise à jour de base de données."

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

sickn33/3d-web-experience

Expert in building 3D experiences for the web - Three.js, React Three Fiber, Spline, WebGL, and interactive 3D scenes. Covers product configurators, 3D portfolios, immersive websites, and bringing depth to web experiences.

sickn33/agent-memory-mcp

A hybrid memory system that provides persistent, searchable knowledge management for AI agents (Architecture, Patterns, Decisions).

sickn33/agent-memory-systems

Memory is the cornerstone of intelligent agents. Without it, every interaction starts from zero. This skill covers the architecture of agent memory: short-term (context window), long-term (vector stores), and the cognitive architectures that organize them.

sickn33/ai-agents-architect

Expert in designing and building autonomous AI agents. Masters tool use, memory systems, planning strategies, and multi-agent orchestration.

sickn33/api-documentation-generator

Generate comprehensive, developer-friendly API documentation from code, including endpoints, parameters, examples, and best practices

sickn33/api-patterns

API design principles and decision-making. REST vs GraphQL vs tRPC selection, response formats, versioning, pagination.

sickn33/api-security-best-practices

Implement secure API design patterns including authentication, authorization, input validation, rate limiting, and protection against common API vulnerabilities

sickn33/app-store-optimization

Complete App Store Optimization (ASO) toolkit for researching, optimizing, and tracking mobile app performance on Apple App Store and Google Play Store

sickn33/architecture

Architectural decision-making framework. Requirements analysis, trade-off evaluation, ADR documentation. Use when making architecture decisions or analyzing system design.

sickn33/audio-transcriber

Transform audio recordings into professional Markdown documentation with intelligent summaries using LLM integration

sickn33/aws-serverless

Specialized skill for building production-ready serverless applications on AWS. Covers Lambda functions, API Gateway, DynamoDB, SQS/SNS event-driven patterns, SAM/CDK deployment, and cold start optimization.

sickn33/backend-architect

Expert backend architect specializing in scalable API design, microservices architecture, and distributed systems.

sickn33/backend-dev-guidelines

You are a senior backend engineer operating production-grade services under strict architectural and reliability constraints. Use when routes, controllers, services, repositories, express middleware, or prisma database access.

sickn33/bash-linux

Bash/Linux terminal patterns. Critical commands, piping, error handling, scripting. Use when working on macOS or Linux systems.

sickn33/bash-scripting

Bash scripting workflow for creating production-ready shell scripts with defensive patterns, error handling, and testing.

sickn33/brainstorming

Use before creative or constructive work (features, architecture, behavior). Transforms vague ideas into validated designs through disciplined reasoning and collaboration.

sickn33/browser-automation

Browser automation powers web testing, scraping, and AI agent interactions. The difference between a flaky script and a reliable system comes down to understanding selectors, waiting strategies, and anti-detection patterns.

sickn33/browser-extension-builder

Expert in building browser extensions that solve real problems - Chrome, Firefox, and cross-browser extensions. Covers extension architecture, manifest v3, content scripts, popup UIs, monetization strategies, and Chrome Web Store publishing.

sickn33/bun-development

Fast, modern JavaScript/TypeScript development with the Bun runtime, inspired by [oven-sh/bun](https://github.com/oven-sh/bun).

sickn33/cc-skill-security-review

This skill ensures all code follows security best practices and identifies potential vulnerabilities. Use when implementing authentication or authorization, handling user input or file uploads, or creating new API endpoints.

Skills associés