Reputation: 51
I am new to Bull and my use case is to run a job after 10 sec, for that, I am using the below code
const options = {
delay: 10000, // in ms
jobId: myCustomUUID,
};
myQueue.add(someRandomData, options);
after adding it to the queue, now after a few sec let's say 4 sec, i want to remove the job from the queue as it is no longer required due to some condition, how can I achieve it. I know there is job.remove(). but how to use it for a given jobId. can someone please help me with it.
Upvotes: 4
Views: 13966
Reputation: 31
I think this is best solution:
this.queue.add('key', {data}, {removeOnComplete: true, removeOnFail: true})
Upvotes: 1
Reputation: 11445
first, give a job id when you are adding the queue.
await promotionEndQueue.add(
payload,
{
delay: delay,
jobId: `${data.id}`,
}
);
if want to remove the job, grab it by the id, it was registered with.
// first find the job by Id
const job = await promotionEndQueue.getJob(data.id);
// then remove the job
await job?.remove();
Upvotes: 10
Reputation: 485
to do that automatically you can setup on this way: https://github.com/OptimalBits/bull/blob/HEAD/REFERENCE.md#user-content-queueadd
Assuming you have a queue and some model.
const jobOptions = {
removeOnComplete: true,
removeOnFail: true
}
this.queue.add(model, jobOptions)
Upvotes: 0