工人在Kue处理多种工作类型

时间:2017-03-01 11:45:42

标签: node.js queue kue

我只是在调查Kue作为工作处理器。但是我坚持一个概念:

假设我有多个工作人员,所有人都可以处理两种工作类型中的一种。

代码看起来像这样:

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 个答案:

答案 0 :(得分:2)

解决此问题的一种方法是只有一个队列作业类型,但在传递给作业的数据中指定作业类型并根据该作业进行处理。

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");
  }
});