6
app.js文件代码
class AppBootHook {
constructor (app) {
this.app = app
}
/**
* 应用已经启动完毕
* @return {Promise<void>}
*/
async didReady () {
const ctx = await this.app.createAnonymousContext()
const queue = this.app.bull.get('q1')
ctx.getLogger('build').info('队列监听' + JSON.stringify(this.app))
queue.process(async job => {
return await ctx.service.buildIos.runJob(job)
})
// 监听任务
queue.on('completed', (job, result) => {
ctx.getLogger('build').info('任务已完成,任务ID: %s', job.id)
})
queue.on('failed', (job, err) => {
ctx.getLogger('build').error('任务已失败,任务ID: %s', job.id)
})
}
}
module.exports = AppBootHook
问题: 默认queue.process是同时执行一个任务,npm run dev下正常,但是npm run start后会在多个work里面执行,导致队列process同时执行多个。 看了issue中又2个朋友有类型情况,请问如何在一个work上执行或者同时只有一个proccess有效? (备注:agent通知这个不行,因为无法获取到队列进度,还是会导致并行)