如何在node.js中创建和使用后台作业?
我遇到过两个库(node-resque和node-worker),但想知道是否有更多的东西使用.
我对此做了一些研究,我会这样做.
建立安装beanstalkd.另一个消息队列,但这个支持DELAYED PUTS.如果你从源代码编译它会变得有点困难,因为它依赖于libevent(比如memcached).但话说回来,我认为你不必从源代码编译它,因为有很多二进制包可用.例如,在Ubuntu上,您可以通过发出命令来安装beanstalkd:
sudo apt-get install beanstalkd
安装beanstalkd客户端库.我找到的最好的是node-beanstalk-client.因为在beanstalkd客户端库列表中没有/未提及此库(然后我可以再次向列表中添加条目,因此我将添加此库).我更喜欢这个库而不是其他库的原因是:
Npm包:我喜欢使用npm包来安装客户端库.其他人没有.
主动开发:我更喜欢后期/更多提交的库.
因此,要安装它,在安装了npm(写入方式)之后,您只需发出以下命令:
npm install beanstalk_client码
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
,consumer.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的功能丰富的优先级作业队列.Kue的一个关键特性是其干净的用户界面,用于查看和管理排队,活动,失败和已完成的作业.