2013-04-07 81 views
3

从KUE文档,创建队列和添加作业是容易的,但我不能按照工作如何将被存储添加作业到队列中KUE

var kue = require('kue') 
    jobs = kue.createQueue(); 

添加作业

jobs.create('email', { 
    title: 'welcome email for tj' 
    , to: '[email protected]' 
    , template: 'welcome-email' 
}).priority('high').save(); 

的例子很容易理解,但是,如果我需要什么,例如更多的选择的例子,比如增加一个广告的选项 - ,ad: 'we are the best'

jobs.create('email', { 
    title: 'welcome email for tj' 
    , to: '[email protected]' 
    , ad: 'we are the best' 
    , template: 'welcome-email' 
}).priority('high').save(); 

我该怎么去呢?

回答

3

jobs.create的第二个参数是可在作业处理器中访问的对象。你可以把你想要的任何领域放在那里。然后,一旦你设置你的处理器,你可以使用“广告”字段。

添加到您的示例:

jobs.process('email', function (job, done) { 
    var advertOption = job.data.ad; 

    // Do your emailing stuff, like rendering template and sending... 

}); 

如果你给三个参数可以指定你想要的工人数量:

jobs.process('email', 1, function (job, done) { // samesame 

associated source易于阅读并很好的注释

+0

我认为jobs.process的第二个参数不是工作人员数量,而是每个工作人员应该从队列中取出的作业数量(并同步处理)。取决于你对员工的定义,但我发现他们已经在源头上使用了它。 – DanS 2013-10-28 13:29:48

+0

@DanS工作人员我的意思是,lib的[Worker class](https://github.com/LearnBoost/kue/blob/master/lib/queue/worker.js)。第二个参数是将要实例化的“新Worker()”的数量。至于异步处理和同步处理,工作人员一次只能完成一项工作,但与节点中的所有工作一样,它们是异步处理的。所以如果你有一个高延迟网络的工作,你可能需要设置更多的工作者,而不是你机器上运行的核心数量。例如:通过SES发送电子邮件 – jwags 2013-10-28 17:30:47

+0

对不起,你说得对。我很困惑它与集群(多进程)方法,但都是异步的。 – DanS 2013-10-28 18:28:31