我只是在调查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”个工作类型,每个工作类型都具有可配置的并行运行。我不希望每种工作类型都有单独的流程,因为这很难扩展。每个流程都应该能够处理任何工作类型。
如何确保任何一名工人一次只能处理一批工作类型?
答案 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");
}
});