我只是在调查 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 批作业类型?