节点公牛队列错误:缺少作业类型 JOB_NAME

问题描述

我正在创建节点公牛队列并将动态名称作为选项传递给 Queue.add function

myQueue.add(`myJob-${val}`,{
    attempts: 3,removeOnFail: true
});

我正在为上述作业定义如下进程名称

myQueue.process(`myJob-${val}`,async (job,callback) => {
    try {
        console.log('Processing job',job.id,job.data);
        callback();

    } catch (err) {
        console.log(err);
    }
});

但是,我收到以下错误

Job ID 1 Failed Error: Missing process handler for job type myJob-123

如何使用动态名称值正确定义 processor

解决方法

您对 .add() 的第二个参数不应该是作业数据吗?您作为第二个参数传入的工作选项是正确的,但它们应该是第三个。

可以试试这个:

myQueue.add(`myJob-${val}`,{ lorem: "ipsum" },{
    attempts: 3,removeOnFail: true
});

如果我收到同样的 Missing process handler for job ___ 错误,那是因为我在处理器运行之前添加了作业。当该问题不可避免时,将 attempts (如您所做的)增加到大于 1 的数字已修复它。但是,您将这些作业选项作为 data 传递,因此 attempts 不会影响您的队列。