node.js - principiantes - npm
Node.js trabajadores/procesos de fondo (2)
Estoy usando Kue .
Kue es una cola de trabajo de prioridad rica en características para node.js respaldado por redis. Una característica clave de Kue es su interfaz de usuario limpia para ver y administrar trabajos en cola, activos, fallidos y completados.
¿Cómo puedo crear y usar trabajos en segundo plano en node.js?
Me he encontrado con dos libs (node-resque y node-worker) pero me gustaría saber si hay algo más usado.
Hice una investigación sobre esto y lo haría así.
Preparar
beanstalkd
Instalar beanstalkd . Otra cola de mensajes, PERO esta soporta PUTS RETARDADOS . Si compilas desde la fuente será un poco más difícil porque depende de libevent (como memcached). Pero, de nuevo, no creo que debas compilarlo desde la fuente, porque hay muchos paquetes binarios disponibles. Por ejemplo, en Ubuntu puede instalar beanstalkd emitiendo el comando:
sudo apt-get install beanstalkd
nodo-beanstalk-cliente
Instalar una biblioteca de cliente beanstalkd. El mejor que encontré fue node-beanstalk-client . Debido a que en la lista de la biblioteca del cliente de beanstalkd, esta biblioteca no fue mencionada (de nuevo, puedo agregar entradas a la lista, así que agregaré esta). Las razones por las que prefiero esta biblioteca a las otras son:
- Paquete Npm : Me gustó usar un paquete npm para instalar la biblioteca cliente. Los demás no tenían ninguno.
- Desarrollo activo : prefiero bibliotecas que tengan más / más confirmaciones posteriores.
Entonces, para instalarlo, después de que haya instalado npm ( la forma de escritura ), simplemente emitirá el siguiente comando:
npm install beanstalk_client
Código
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();
});
Primero comience el consumidor:
node consumer.js
Siguiente inicio producer.js
. Cinco segundos (el retraso que especifiqué) después de ejecutar producer.js
, consumer.js
procesará el mensaje.
productor.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();
});
});
para empezar solo problema:
node producer.js