用于作业处理的布尔单独进程无法捕获队列上的事件



在我的node.js应用程序中,我使用bull模块实现后台作业处理。我需要捕获队列中的某些事件,如completedfailederror

我试图为流程函数创建一个单独的流程,但问题是,在将作业处理转移到流程函数后,我无法捕捉到任何事件,如completedfailederror

下面是我的代码

processor.js

module.exports =  async function(job, done) {
try {
await processExport.performExport(job.data.params, done);
} catch(err) {
console.log(err);
console.log('in error handling');
};
}

worker.js

const csvExportProcessing = require('../queue');
csvExportProcessing.process(5, __dirname + '/processor.js');
csvExportProcessing.on('completed', function(job, result){
console.log('job is now completed');
});
csvExportProcessing.on('failed', function(job, err){
if(job.attemptsMade == job.opts.attempts) {
//send a postback
}
});

csvExportProcessing.on('global:error', function(job, err){
console.log('Is last attempt?  => ', (job.attemptsMade === job.opts.attempts));
});

我能够使用以下代码捕获事件,以下是捕获failed事件的相关代码

const myQueue =  process.env.NODE_ENV == 'development' ? new Queue('myqueuename') : new Queue('myqueuename', 'redis://redis:6379/13');
setQueues([myQueue]);
myQueue.on('failed', async function(job, err){
if(job.attemptsMade == job.opts.attempts) {
//do something
}
});

最新更新