Skip to content

Introduction

Introduction

Queue Monitor for Laravel tracks individual queue jobs with payload storage, replay, and analytics. Unlike aggregate metrics tools, it records every single job from queue to completion.

What Makes It Different

Individual Job Tracking

Most queue monitoring tools provide aggregate metrics (jobs per minute, average duration). Queue Monitor tracks every individual job with full lifecycle visibility.

Job Replay

Failed jobs can be replayed from stored payloads. Useful for debugging and recovery.

Worker & Server Tracking

Know exactly which server and worker processed each job. Horizon vs queue:work is detected automatically.

Resource Metrics

Track CPU time, memory usage, and file descriptors per job via laravel-queue-metrics.

Key Features

  • Individual Job Records: Every job tracked with unique UUID
  • Payload Storage: Full job payload saved for replay
  • Retry Chain Tracking: Full visibility into retry attempts
  • Server Identification: Track which server/worker processed each job
  • Resource Metrics: CPU, memory, duration per job
  • Tag Organization: Categorize jobs with custom tags
  • REST API: 14 endpoints for dashboards and integrations
  • Job Replay: Re-dispatch jobs from stored payloads
  • Failure Analytics: Pattern detection and trend analysis
  • Queue Health: Real-time health scoring per queue

Quick Example

use Cbox\LaravelQueueMonitor\Facades\LaravelQueueMonitor as QueueMonitor;
use Cbox\LaravelQueueMonitor\Enums\JobStatus;

// Get failed jobs from last 24 hours
$filters = new JobFilterData(
    statuses: [JobStatus::FAILED],
    queuedAfter: Carbon::now()->subHours(24)
);

$failedJobs = QueueMonitor::getJobs($filters);

// Replay each failed job
foreach ($failedJobs as $job) {
    try {
        $replayData = QueueMonitor::replay($job->uuid);
        echo "Replayed: {$replayData->newJobId}\n";
    } catch (\Exception $e) {
        echo "Replay failed: {$e->getMessage()}\n";
    }
}

// View statistics
$stats = QueueMonitor::statistics();
echo "Success Rate: {$stats['success_rate']}%\n";
echo "Average Duration: {$stats['avg_duration_ms']}ms\n";

Architecture

  • Action Pattern: All business logic in single-responsibility actions
  • DTO Pattern: Type-safe data transfer objects
  • Repository Pattern: Data access through contracts
  • Event-Driven: Subscribes to Laravel queue events and queue-metrics events

Requirements

  • PHP 8.3+
  • Laravel 11+
  • cboxdk/laravel-queue-metrics ^2.3 (installed automatically)
  • Redis (default for metrics storage) or database (for low-scale workloads)

Next Steps