Bull Queue pour TypeScript : Une puissante file d'attente de tâches
Bull Queue est une bibliothèque populaire pour gérer les files d'attente de tâches en Node.js, écrite en TypeScript. Elle est basée sur Redis et offre un moyen fiable de traiter des tâches en arrière-plan, telles que l'envoi d'emails, la génération de rapports, le traitement d'images et d'autres opérations qui ne doivent pas bloquer le thread principal de l'application. Bull Queue prend en charge les priorités, les délais, les tentatives et la surveillance via une interface web.
Pourquoi utiliser Bull Queue ?
Dans les applications web modernes, des tâches qui nécessitent du temps ou des ressources surviennent souvent. Les exécuter de manière synchrone peut entraîner un ralentissement de l'interface utilisateur, voire des timeouts. Bull Queue permet de déporter ces tâches en arrière-plan, en les traitant de manière asynchrone. Cela améliore les performances, la scalabilité et la résilience de l'application. Par exemple, lors de l'inscription d'un utilisateur, un email de bienvenue peut être envoyé immédiatement via la file d'attente, sans faire attendre l'utilisateur.
Installation
Pour installer Bull Queue, exécutez la commande :
npm install bullRedis est également nécessaire. Assurez-vous que Redis est exécuté localement ou accessible à distance. Pour TypeScript, installez également les types :
npm install @types/bullFonctionnalités principales
- Création de files d'attente : Créez facilement des files d'attente avec différents paramètres.
- Ajout de tâches : Ajoutez des tâches avec des données et des options (priorité, délai, tentatives).
- Gestionnaires : Définissez des fonctions pour traiter chaque tâche.
- Tentatives : Répétitions automatiques en cas d'erreur avec une stratégie configurable.
- Surveillance : Interface web intégrée pour visualiser l'état des files d'attente (via le package
bull-board).
Exemple de code en TypeScript
import Queue from 'bull';
// Création de la file d'attenteconst emailQueue = new Queue('email', { redis: { host: 'localhost', port: 6379 }});
// Ajout d'une tâcheemailQueue.add({ to: 'user@example.com', subject: 'Bonjour !' }, { attempts: 3, delay: 5000 // 5 secondes de délai});
// Gestionnaire de tâcheemailQueue.process(async (job) => { console.log('Envoi d\'email :', job.data.to); // Code d'envoi d'email ici await sendEmail(job.data.to, job.data.subject);});
// Gestion de la complétionemailQueue.on('completed', (job) => { console.log('Tâche terminée :', job.id);});
emailQueue.on('failed', (job, err) => { console.error('Erreur :', err);});Quand l'utiliser
Bull Queue est idéal pour :
- L'envoi d'emails ou de SMS.
- La génération de PDF ou de rapports.
- Le traitement de fichiers téléchargés (images, vidéos).
- L'exécution de tâches périodiques (tâches cron).
- L'intégration avec des API externes avec limitation de débit.
Si votre projet en TypeScript nécessite un traitement fiable des tâches en arrière-plan, Bull Queue est un excellent choix grâce à sa simplicité, ses performances et son intégration avec Redis.
Aussi dans la bibliothèque
Traitement d'images : redimensionnement et recadrage en C++ avec OpenCV
Travailler avec Markdown en Go (Golang) : bibliothèques, analyse et conversion
Travailler avec Apache Kafka en Swift (iOS/macOS) : bibliothèques et exemples
Inversify TypeScript : guide complet avec exemples pratiques
Blade PHP : guide complet avec exemples pratiques