Features
Queue Management
Queuety supports multiple named queues. Workers process one queue at a time, 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=syncThe 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 emailsThis 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=emailsBuried jobs
List all buried jobs (failed after exhausting retries):
$buried = Queuety::buried(); // all queues
$buried = Queuety::buried( 'emails' ); // specific queueRetry them:
Queuety::retry( $job_id ); // retry a specific job
Queuety::retry_buried(); // retry all buried jobsPurging 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 daysVia CLI:
wp queuety purge
wp queuety purge --older-than=30