Queue Management
Queuety supports multiple named queues. Each worker processes one queue or an ordered list of queues (see Workers), and queues can be paused and resumed independently.
Named queues
Dispatch jobs to specific queues:
use Queuety\Queuety;
Queuety::dispatch( 'send_email', $payload )->on_queue( 'emails' );
Queuety::dispatch( 'process_image', $payload )->on_queue( 'media' );
Queuety::dispatch( 'sync_data', $payload )->on_queue( 'sync' );
Run workers for each queue:
wp queuety work --queue=emails
wp queuety work --queue=media
wp queuety work --queue=sync
The default queue is default. If you don't specify a queue, jobs go there.
Pause and resume
Pause a queue to stop workers from claiming new jobs. Jobs already being processed will finish, but no new jobs will be picked up.
Queuety::pause( 'emails' );
Queuety::resume( 'emails' );
Check if a queue is paused:
if ( Queuety::is_paused( 'emails' ) ) {
// Queue is paused
}
Via CLI:
wp queuety pause emails
wp queuety resume emails
This is useful during deployments or maintenance windows when you want to temporarily stop processing without killing the worker.
Queue statistics
Get job counts grouped by status:
$stats = Queuety::stats(); // all queues
$stats = Queuety::stats( 'emails' ); // specific queue
// Returns: ['pending' => 12, 'processing' => 3, 'completed' => 150, 'failed' => 2, 'buried' => 1]
Via CLI:
wp queuety status
wp queuety status --queue=emails
Buried jobs
List all buried jobs (failed after exhausting retries):
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queue
Retry them:
Queuety::retry( $job_id ); // retry a specific job
Queuety::retry_buried(); // retry all buried jobs
Purging completed jobs
Remove old completed jobs to keep the database clean:
$count = Queuety::purge(); // uses QUEUETY_RETENTION_DAYS (default: 7)
$count = Queuety::purge( 30 ); // purge jobs older than 30 days
Via CLI:
wp queuety purge
wp queuety purge --older-than=30