Node.js工作者/后台进程

我如何在node.js中创build和使用后台作业?

我遇到了两个库(node-resque和node-worker),但想知道是否有更多的东西被使用。

Solutions Collecting From Web of "Node.js工作者/后台进程"

我做了一些研究,我会这样做。

build立

beanstalkd

  1. 安装beanstalkd 。 另一个消息队列, 但是这个支持DELAYED PUTS 。 如果你从源代码编译将会有点困难,因为它取决于libevent (就像memcached)。 但是再一次,我不认为你必须从源代码编译它,因为有很多可用的二进制包 。 例如在Ubuntu上,你可以通过发出命令来安装beanstalkd:

    sudo apt-get install beanstalkd

节点豆茎的客户端

  1. 安装一个beanstalkd客户端库。 我find的最好的是node-beanstalk-client 。 因为在beanstalkd客户端库列表中,这个库没有/没有被提及(然后我可以添加条目到列表中,所以我将添加这个)。 我比较喜欢这个图书馆的原因是:

    1. Npm包 :我喜欢用npm包来安装客户端库。 其他人没有。
    2. 主动开发 :我更喜欢后期/更多提交的库。

所以要安装它,在安装了npm ( 写入方式 )之后,您只需发出以下命令:

 npm install beanstalk_client 

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

首先启动消费者:

 node consumer.js 

接下来开始producer.js 。 执行producer.js 5秒(延迟我指定), consumer.js将处理消息。

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

开始正义问题:

 node producer.js 

我正在使用Kue 。

Kue是由redis支持的node.js的function丰富的优先级作业队列。 Kue的一个关键特性是其清晰的用户界面,用于查看和pipe理排队,活动,失败和完成的作业。