【问题标题】:Node.js workers/background processesNode.js 工作者/后台进程
【发布时间】:2011-06-13 07:38:09
【问题描述】:

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

我遇到了两个库(node-resque 和 node-worker),但想知道是否还有更多用处。

【问题讨论】:

    标签: node.js delayed-job resque


    【解决方案1】:

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

    设置

    豆茎

    1. 安装beanstalkd。另一个消息队列,但是这个支持DELAYED PUTS。如果你从源代码编译它会有点困难,因为它依赖于libevent(如 memcached)。但话又说回来,我认为您不必从源代码编译它,因为有很多 binary packages 可用。例如,在 Ubuntu 上,您可以通过发出以下命令来安装 beanstalkd:

      sudo apt-get install beanstalkd

    node-beanstalk-client

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

      1. npm 包:我喜欢使用 npm 包来安装客户端库。其他人没有。
      2. 积极开发:我更喜欢具有较晚/更多提交的库。

    所以要安装它,在你安装npm(the write way) 之后,你只需发出以下命令:

    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 后五秒(我指定的延迟),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
    

    【讨论】:

    • 对不起阿尔弗雷德。我真的忘记将其标记为正确。!谢谢!
    • @Editor 谢谢:)。 @Donald没问题:)。太好了,这对您有帮助!
    【解决方案2】:

    我正在使用Kue

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多