删除 BullMQ 中的特定可重复作业(使用 jobID)



我需要从队列中删除特定的单个作业。 实际情况是,我已经将一个作业添加到队列中,然后在某个 API 调用中,我需要从队列中删除该单个作业。 所以,以后不会再重复了。

加:

const job = await this.locationQueue.add('alert', { handle, author, data }, { repeat: { every: 60000 } });

删除:

await this.locationQueue.removeRepeatable('alert', { jobId: request.jobKey, every: 60000 });

其中 request.jobKey 是从 add job.id 的。

首先,您需要使用指定的jobId创建作业:

await queue.add('job-name', user.id, {
repeat: { every: 1000 },
jobId: 'job-id',
});

然后你可以通过组合作业名称、id 和延迟来像这样删除它:

await queue.removeRepeatableByKey(
'job-name:job-id::1000',
);

请注意,延迟后指定了 2 个冒号。

据我所知,在将其添加到队列时,您需要指定相同的jobId

const job = await this.locationQueue.add('alert', { handle, author, data, jobId: 'some job unique job id'}, { repeat: { every: 60000 } });

在队列中添加新作业时,您需要为您的情况指定一个jobId,如 @Ayzrian 的回答所述。

但是这个jobId应该由你提供,而不是BullMQ为自己生成的那个。

BullMQ生成的作业的 id 供以后在作业已排队时使用。

在对可重复作业进行排队时提供的 jobId 应与您在删除相同的可重复作业时使用的 jobId 相同(以及其他参数,如 BullMQ 文档中所述)。

相关内容

  • 没有找到相关文章

最新更新