Prioritized
Jobs can also include a
priority
option. Using priorities, job processing order will be affected by the specified priority
instead of following a FIFO or LIFO pattern.Adding prioritized jobs is a slower operation than the other types of jobs, with a complexity `O(log(n))`` relative to the number of jobs in the prioritized set in the queue.
Note that the priorities go from
1
to 2 097 152
, where a lower number is always a higher priority than higher numbers.Jobs without a `priority`` assigned will get the most priority.
import { Queue } from 'bullmq';
const myQueue = new Queue('Paint');
await myQueue.add('wall', { color: 'pink' }, { priority: 10 });
await myQueue.add('wall', { color: 'brown' }, { priority: 5 });
await myQueue.add('wall', { color: 'blue' }, { priority: 7 });
// The wall will be painted first brown, then blue and
// finally pink.
If several jobs are added with the same priority value, then the jobs within that priority will be processed in FIFO (First in, first out) fashion.
If you want to change the
priority
after inserting a job, use the changePriority
method. For example, let's say that you want to change the priority
from 16
to 1
:const job = await Job.create(queue, 'test2', { foo: 'bar' }, { priority: 16 });
await job.changePriority({
priority: 1,
});
const job = await Job.create(queue, 'test2', { foo: 'bar' }, { priority: 16 });
await job.changePriority({
lifo: true,
});
As prioritized is a new state. You must use
getJobs
or getPrioritized
method as:const jobs = await queue.getJobs(['prioritized']);
const jobs2 = await queue.getPrioritized();
Last modified 10d ago