Ce tutoriel explique les structures de données de file d'attente et démontre leur application dans les systèmes de file d'attente, souvent utilisés pour traiter les tâches de longue durée comme la livraison de newsletter par e-mail. Nous allons créer une file d'attente de tâches de nœud simple à l'aide de MongoDB comme courtier de messages.
Exécuter les tâches immédiatement sur demande n'est pas toujours possible. Imaginez un système de newsletter par e-mail: l'envoi de milliers d'e-mails submergerait instantanément le système. De même, le redimensionnement immédiate des images téléchargées créerait des retards inacceptables. Les tâches de découplage fournissent des réponses utilisateur instantanées tandis que les processus d'arrière-plan gèrent la charge de travail.
Concepts clés:
push()
, shift()
) ou des classes ES6 pour la gestion des files d'attente. queue-mongodb
Module: Simplifier la gestion des files d'attente dans Node.js en utilisant MongoDB. Structures de données de file d'attente:
Une file d'attente est une structure de données FIFO (premier entrée en dehors). Des éléments sont ajoutés (enquêtés) à l'arrière et retirés (déquequés) de l'avant.
Fitre JavaScript de base:
Une file d'attente simple peut être implémentée à l'aide d'un tableau JavaScript:
const queue = []; queue.push('item 1'); queue.push('item 2'); console.log(queue.shift()); // item 1 console.log(queue.shift()); // item 2
Une approche plus structurée utilise une classe ES6:
class Queue { constructor() { this.q = []; } send(item) { this.q.push(item); } receive() { return this.q.shift(); } }
Ceux-ci conviennent aux tâches moins critiques côté client, mais manquent de persistance et d'accès multi-applications.
plates-formes de file d'attente (redis, lapin, etc.):
Pour les applications de serveur complexes, les courtiers de messages dédiés proposent:
Utilisation de MongoDB comme courtier de messages:
Nous utiliserons le module queue-mongodb
pour une file d'attente de tâches de nœud robuste et facilement implémentée.
Configuration du projet de file d'attente des tâches de nœud:
queue-test
). package.json
: const queue = []; queue.push('item 1'); queue.push('item 2'); console.log(queue.shift()); // item 1 console.log(queue.shift()); // item 2
npm install
.env
avec les détails de la connexion MongoDB (par exemple, QUEUE_DB_HOST
, QUEUE_DB_PORT
, etc.). send.js
(ajoutant à la file d'attente):
class Queue { constructor() { this.q = []; } send(item) { this.q.push(item); } receive() { return this.q.shift(); } }
receive.js
(traitement de la file d'attente):
{ "name": "queue-test", "version": "1.0.0", "type": "module", "scripts": { "send": "node ./send.js", "receive": "node ./receive.js" }, "dependencies": { "@craigbuckler/queue-mongodb": "^1.0.0", // Adjust version as needed "dotenv": "^16.0.3" // Add dotenv for environment variables } }
queue-mongodb
Détails du module:
Le module utilise MongoDB pour le stockage. La méthode send()
ajoute des documents, et receive()
récupère et supprime l'élément le plus ancien. remove()
, purge()
, et count()
Fournir des fonctions de gestion de file d'attente supplémentaires.
Conclusion:
Ce tutoriel démontre un moyen pratique et efficace de mettre en œuvre une file d'attente de tâches dans Node.js à l'aide de MongoDB. Cette approche équilibre la simplicité et l'évolutivité, ce qui le rend adapté à un large éventail d'applications. N'oubliez pas d'adapter le code et la configuration à vos besoins et à votre environnement spécifiques. Le code complet est disponible sur github (le lien serait fourni si le référentiel GitHub réel était disponible).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!