题
如何在node.js中创建和使用后台作业?
我遇到了两个libs(节点层和节点工人),但想知道是否有其他东西。
解决方案
我对此做了一些研究,我会这样做。
设置
beanstalkd
安装 beanstalkd. 。另一个消息队列, 但 这个支持 延迟的看台. 。如果您从源头编译,它将变得更加困难,因为它取决于 libevent(就像备忘录)。但是话又说回来,我认为您不必从源头编译,因为有很多 二进制包 可用的。例如,在Ubuntu上,您可以通过发出命令来安装Beanstalkd:
sudo apt-get install beanstalkd
节点 - 边缘 - 客户
安装beanstalkd客户库库。我发现最好的是 节点 - 边缘 - 客户. 。因为在beanstalkd客户库库列表上,该库未/未提及(然后我可以再次将条目添加到列表中,因此我将添加此库)。我喜欢这个图书馆而不是其他库的原因是:
- 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
. 。执行后五秒钟(指定延迟i) 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是由Redis支持的Node.js的功能丰富的优先职务队列。 KUE的一个关键功能是其干净的用户界面,用于查看和管理排队,活动,失败和完成的作业。
不隶属于 StackOverflow