2013-04-07 84 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