2017-03-01 71 views
0

我只是將Kue作爲工作處理器進行調查。然而,我堅持一個概念:工作人員在Kue中處理多種工作類型

假設我有多個工人,都可以處理2個工種中的1個。

代碼看起來是這樣的:

queue.process("job1", 1, (job, done) => { 
    console.log("processing job 1") 
}) 
queue.process("job2", 1, (job, done) => { 
    console.log("processing job 2") 
}) 

的想法是,該服務將檢查所有隊列,並啓動最高優先級的作業。但我不想在每個工作人員上平行處理多個工作類型。

這樣做的問題是,如果「job1」和「job2」被同時添加到隊列中,上述過程將以並行方式啓動。

實際上,我將有「N」個工作類型,每個工作類型都有可配置的平行運行。我不希望每個工作類型都有一個單獨的進程,因爲這將難以擴展。每個進程應該能夠處理任何工作類型。

如何確保任何一位工作人員一次只能處理一批作業類型?

回答

1

解決此問題的方法之一是隻有一個隊列作業類型,但在基於此數據傳遞給作業和進程的數據中指定作業類型。

queue.create('alljobs', {type: 'jobType1'}); 
queue.create('alljobs', {type: 'jobType2'}); 

queue.process('alljobs', 1, (job, done) => { 
    if(job.data.type === 'jobType1') { 
    console.log("processing job 1"); 
    } else if(job.data.type === 'jobType2') { 
    console.log("processing job 2"); 
    } 
}); 
+0

謝謝,已經意識到了這一點。但是,你放棄了UI項目和其他方面的好處。我已經用'議程'去了,它具有類似的功能,但更符合我需要的內容 –