这是一个示例作业:
const Agenda = require('agenda')
const agenda = new Agenda({db: {address: process.env.MONGO_URL}})
agenda.define('example-job', (job) => {
console.log('took a job -', job.attrs._id)
})
所以现在,假设我排队了 11 个议程作业,如下所示:
const times = require('lodash/times')
times(11, () => agenda.now('example-job'))
现在,如果我查看数据库,我可以看到有 11 个作业排队并准备就绪(如我所料)。
所以现在我开始一个工作进程:
agenda.on('ready', () => {
require('./jobs/example_job')
agenda.start()
})
当该过程开始时,我看到 5 个作业被从队列中拉出,这是有道理的,因为defaultConcurrency
是 5 https://github.com/agenda/agenda#defaultconcurrencynumber
到目前为止一切顺利,但如果我启动另一个工作进程(与上面的相同),我预计还会有 5 个作业被从队列中拉出,因此总共有 10 个正在运行(每个进程 5 个),还有一个留在队列。
但是,当第二个工人开始时,它不再拉下任何作业,它只是闲置。
我希望这是每个进程defaultConcurrency
在任何给定时刻可以运行的作业数,但它看起来像是一个适用于所有议程进程中任何时刻的作业总数的设置。
我在这里缺少什么或者指定每个进程可以运行多少个作业的正确方法是什么,而不限制可以跨所有进程运行的作业数。