Currently we have 3 available methods in queue class:
Drain
Removes all jobs that are waiting or delayed, but not active, waiting-children, completed or failed.
import { Queue } from 'bullmq';
const queue = new Queue('paint');
await queue.drain();import asyncio
from bullmq import Queue
async def main():
queue = Queue('paint')
await queue.drain()
await queue.close()
asyncio.run(main())alias BullMQ.Queue
:ok = Queue.drain("paint", connection: :redis)using BullMQ;
var queue = new Queue("paint", new QueueOptions
{
Connection = ConnectionOptions.FromString("localhost:6379"),
});
await queue.DrainAsync();use bullmq::Queue;
let queue = Queue::new("paint").await?;
queue.drain(false).await?;<?php
use BullMQ\Queue;
$queue = new Queue('paint');
$queue->drain();
$queue->close();
?>You can also drain delayed jobs by setting the delayed parameter:
import { Queue } from 'bullmq';
const queue = new Queue('paint');
// Also drain delayed jobs
await queue.drain(true);import asyncio
from bullmq import Queue
async def main():
queue = Queue('paint')
# Also drain delayed jobs
await queue.drain(delayed=True)
await queue.close()
asyncio.run(main())alias BullMQ.Queue
# Also drain delayed jobs
:ok = Queue.drain("paint", delayed: true, connection: :redis)using BullMQ;
var queue = new Queue("paint", new QueueOptions
{
Connection = ConnectionOptions.FromString("localhost:6379"),
});
// Also drain delayed jobs
await queue.DrainAsync(delayed: true);use bullmq::Queue;
let queue = Queue::new("paint").await?;
// Also drain delayed jobs
queue.drain(true).await?;<?php
use BullMQ\Queue;
$queue = new Queue('paint');
// Also drain delayed jobs
$queue->drain(true);
$queue->close();
?>WARNING
Parent jobs that belong to the queue being drained will be kept in waiting-children status if they have pending children, but if they do not have any pending children they will just be removed.
WARNING
Parent jobs in queues different from the one being drained will either stay in waiting-children if they have pending children in other queues, or just moved to wait.
Clean
Removes jobs in a specific state, but keeps jobs within a certain grace period.
import { Queue } from 'bullmq';
const queue = new Queue('paint');
const deletedJobIds = await queue.clean(
60000, // 1 minute
1000, // max number of jobs to clean
'paused',
);import asyncio
from bullmq import Queue
async def main():
queue = Queue('paint')
deleted_job_ids = await queue.clean(
60000, # 1 minute
1000, # max number of jobs to clean
'paused',
)
await queue.close()
asyncio.run(main())using BullMQ;
var queue = new Queue("paint", new QueueOptions
{
Connection = ConnectionOptions.FromString("localhost:6379"),
});
var deletedJobIds = await queue.CleanAsync(
60000, // 1 minute
1000, // max number of jobs to clean
"paused");use bullmq::Queue;
let queue = Queue::new("paint").await?;
let deleted_job_ids = queue
.clean(
60000, // 1 minute
1000, // max number of jobs to clean
"paused",
)
.await?;<?php
use BullMQ\Queue;
$queue = new Queue('paint');
$deletedJobIds = $queue->clean(
60000, // 1 minute
1000, // max number of jobs to clean
'paused',
);
$queue->close();
?>Obliterate
Completely obliterates a queue and all of its contents.
import { Queue } from 'bullmq';
const queue = new Queue('paint');
await queue.obliterate();import asyncio
from bullmq import Queue
async def main():
queue = Queue('paint')
await queue.obliterate()
await queue.close()
asyncio.run(main())alias BullMQ.Queue
:ok = Queue.obliterate("paint", connection: :redis)using BullMQ;
var queue = new Queue("paint", new QueueOptions
{
Connection = ConnectionOptions.FromString("localhost:6379"),
});
await queue.ObliterateAsync();use bullmq::Queue;
let queue = Queue::new("paint").await?;
queue.obliterate(false, 1000).await?;<?php
use BullMQ\Queue;
$queue = new Queue('paint');
$queue->obliterate();
$queue->close();
?>For more advanced scenarios where you need to force obliteration even with active jobs:
import { Queue } from 'bullmq';
const queue = new Queue('paint');
// Force obliteration even with active jobs
await queue.obliterate({ force: true });import asyncio
from bullmq import Queue
async def main():
queue = Queue('paint')
# Force obliteration even with active jobs
await queue.obliterate(force=True)
await queue.close()
asyncio.run(main())alias BullMQ.Queue
# Force obliteration even with active jobs
:ok = Queue.obliterate("paint", force: true, connection: :redis)using BullMQ;
var queue = new Queue("paint", new QueueOptions
{
Connection = ConnectionOptions.FromString("localhost:6379"),
});
// Force obliteration even with active jobs
await queue.ObliterateAsync(force: true);use bullmq::Queue;
let queue = Queue::new("paint").await?;
// Force obliteration even with active jobs
queue.obliterate(true, 1000).await?;<?php
use BullMQ\Queue;
$queue = new Queue('paint');
// Force obliteration even with active jobs
$queue->obliterate(['force' => true]);
$queue->close();
?>WARNING
Parent jobs in queues different from the one being obliterated will either stay in waiting-children if they have pending children in other queues, or just moved to wait.