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

我遇到了两个libs(节点层和节点工人),但想知道是否有其他东西。

有帮助吗?

解决方案

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

设置

beanstalkd

  1. 安装 beanstalkd. 。另一个消息队列, 这个支持 延迟的看台. 。如果您从源头编译,它将变得更加困难,因为它取决于 libevent(就像备忘录)。但是话又说回来,我认为您不必从源头编译,因为有很多 二进制包 可用的。例如,在Ubuntu上,您可以通过发出命令来安装Beanstalkd:

    sudo apt-get install beanstalkd

节点 - 边缘 - 客户

  1. 安装beanstalkd客户库库。我发现最好的是 节点 - 边缘 - 客户. 。因为在beanstalkd客户库库列表上,该库未/未提及(然后我可以再次将条目添加到列表中,因此我将添加此库)。我喜欢这个图书馆而不是其他库的原因是:

    1. NPM软件包: :我喜欢使用NPM软件包安装客户端库。其他人没有。
    2. 积极发展: :我更喜欢以后/更多提交的库。

因此,要安装它,安装后 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的一个关键功能是其干净的用户界面,用于查看和管理排队,活动,失败和完成的作业。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top