2017-03-01 68 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项目和其他方面的好处。我已经用'议程'去了,它具有类似的功能,但更符合我需要的内容 –