Question

Comment puis-je créer et emplois d'arrière-plan dans l'utilisation Node.js?

Je suis tombé sur deux libs (noeud-noeud Resque et de travail), mais aimerait savoir s'il y a quelque chose de plus utilisé.

Était-ce utile?

La solution

Je l'ai fait des recherches sur ce sujet et je le ferais comme ça.

Configuration

beanstalkd

  1. Installer beanstalkd . Une autre file d'attente de messages, et RETARDS PUTS . Si vous compilez de la source, il va être un peu plus difficile car cela dépend libevent (comme memcached ). Mais là encore, je ne pense pas que vous devez compiler à partir des sources, parce qu'il ya beaucoup de paquets binaires disponibles. Par exemple sur Ubuntu, vous pouvez installer beanstalkd en exécutant la commande:

    sudo apt-get install beanstalkd

node-beanstalk-client

  1. Installer une bibliothèque client beanstalkd. Le meilleur que j'ai trouvé noeud-client Beanstalk. Parce que sur la liste des bibliothèques client beanstalkd cette bibliothèque est pas / n'a pas été mentionné (là encore, je peux ajouter des entrées à la liste, je vais donc ajouter celui-ci). Les raisons pour lesquelles je préfère cette bibliothèque sur les autres sont:

    1. package Npm : J'aimais utiliser un paquet NPM pour installer la bibliothèque cliente. Les autres n'ont pas.
    2. développement actif :. Je préfère les bibliothèques qui ont plus tard / plus commits

Donc, pour l'installer, après avoir installé NPM ( le chemin d'écriture ) vous simplement exécutez la commande suivante:

npm install beanstalk_client

code

consumer.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();
});

Tout d'abord démarrer le consommateur:

node consumer.js 

prochain démarrage producer.js. Cinq secondes (retard I spécifié) après l'exécution producer.js, consumer.js traitera le message.

producer.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.stringify(job_data), function(err, job_id) {
        console.log('put job: ' + job_id);
        process.exit();
    });
});

pour commencer juste question:

node producer.js

Autres conseils

J'utilise Kue .

  

Kue est une fonctionnalité riche file d'attente prioritaire pour Node.js soutenues par Redis. Une caractéristique clé de Kue est son interface utilisateur propre pour la visualisation et la gestion de la file d'attente, actifs, ont échoué et les travaux terminés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top