【发布时间】:2020-05-13 22:36:28
【问题描述】:
我正在尝试在不同的 processor 文件 itef 中运行 process,就像它在 bull documentation 中一样,我添加了如下文件。
// -------- Queue.js ----------
formatQueue.process(__dirname + "/processors/format-worker.js");
// On Cmplete Handler
formatQueue.on('completed', function(job, result){
console.log(result, "Format-Complete-job"); // result is undefined
if(job.data.is_well_format){
existenceQueue.add(job.data, { attempts: 3, backoff: 1000 });
}else QueueModel.lastStep(job.data)
});
// -------- Queue.js ends ---------
//format-worker.js
Validator = require("../../validators");
module.exports = (job) => {
Validator.Format.validate(job.data, (data) => {
job.data = data;
return Promise.resolve(data);
});
}
现在在我之前使用的作业完成时,我曾经使用更新的作业参数获取作业数据。现在我没有得到更新的工作数据。文档中的第二个参数,即result 是undefined。现在如何在这种情况下获取更新的作业数据。
job 和processors 工作正常,我运行process 如下。
formatQueue.process(function(job, done){
Validator.Format.validate(job.data, (data) => {
job.data = data;
done();
});
});
在这种情况下,工作数据本身正在更新,并且效果也很好。
我有多个队列在做不同的工作,一旦前一个工作成功完成,那么我只需要另一个工作来开始工作。 我还有另一个问题,我已经提到了那里的用例。 please check it here.
【问题讨论】:
-
我最近遇到了类似的问题。您是否尝试将 done 添加到外部处理器的函数并运行它而不是返回 Promise?
标签: node.js queue job-queue bull.js bull-queue