Queuety
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=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

On this page