Node.js travailleurs / processus en arrière-plan

Comment créer et utiliser des tâches en arrière-plan dans node.js?

J’ai rencontré deux bibliothèques (node-resque et node-worker), mais j’aimerais savoir s’il y a quelque chose de plus utilisé.

J’ai fait des recherches à ce sujet et je le ferais comme ça.

Installer

beanstalkd

  1. Installez beanstalkd . Une autre file de messages, MAIS celle-ci prend en charge les RETARDS PUTS . Si vous comstackz à partir de la source, ça va être un peu plus dur parce que cela dépend de libevent (comme memcached). Mais encore une fois, je ne pense pas que vous deviez le comstackr à partir du source, car il y a beaucoup de paquets binarys disponibles. Par exemple, sur Ubuntu, vous pouvez installer beanstalkd en lançant la commande suivante:

    sudo apt-get install beanstalkd

node-beanstalk-client

  1. Installez une bibliothèque client beanstalkd. Le meilleur que j’ai trouvé était node-beanstalk-client . Parce que dans la liste des bibliothèques du client beanstalkd, cette bibliothèque n’est pas / n’a pas été mentionnée (Là encore, je peux append des entrées à la liste, je vais donc append celle-ci). Les raisons pour lesquelles je préfère cette bibliothèque aux autres sont:

    1. Paquet Npm : j’ai aimé utiliser un paquet npm pour installer la bibliothèque cliente. Les autres n’en avaient pas.
    2. Développement actif : je préfère les bibliothèques qui ont plus tard / plus de commits.

Donc, pour l’installer, après avoir installé npm ( le moyen d’écriture ), il vous suffit d’envoyer la commande suivante:

 npm install beanstalk_client 

Code

consommateur.js

 var client = require('beanstalk_client').Client; client.connect('127.0.0.1:11300', function(err, conn) { var reserve = function() { conn.reserve(function(err, job_id, job_json) { console.log('got job: ' + job_id); console.log('got job data: ' + job_json); console.log('module name is ' + JSON.parse(job_json).data.name); conn.destroy(job_id, function(err) { console.log('destroyed job'); reserve(); }); }); } reserve(); }); 

Commencez par le consommateur:

 node consumer.js 

Prochain démarrage producer.js . Cinq secondes (délai que j’ai spécifié) après l’exécution du producer.js , consumer.js traite le message.

producteur.js

 var client = require('beanstalk_client').Client; client.connect('127.0.0.1:11300', function(err, conn) { var job_data = {"data": {"name": "node-beanstalk-client"}}; var priority = 0; var delay = 5; var timeToRun = 1; conn.put(priority, delay, timeToRun, JSON.ssortingngify(job_data), function(err, job_id) { console.log('put job: ' + job_id); process.exit(); }); }); 

pour commencer, il suffit de publier:

 node producer.js 

J’utilise Kue .

Kue est une file d’attente de travaux prioritaire riche en fonctionnalités pour node.js appuyée par redis. Une fonctionnalité clé de Kue est son interface utilisateur épurée pour l’affichage et la gestion des travaux en queue, actifs, en échec et terminés.