PHPackages                             willypelz/queue-monitor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. willypelz/queue-monitor

ActiveLibrary[Database &amp; ORM](/categories/database)

willypelz/queue-monitor
=======================

A Laravel queue monitor with database driver support, controls, and metrics.

v2.3.0(3mo ago)481↓83.3%MITPHPPHP ^8.0CI passing

Since Feb 24Pushed 3mo agoCompare

[ Source](https://github.com/willypelz/queue-monitor)[ Packagist](https://packagist.org/packages/willypelz/queue-monitor)[ RSS](/packages/willypelz-queue-monitor/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (20)Versions (8)Used By (0)

Queue Monitor
=============

[](#queue-monitor)

[![Latest Version](https://camo.githubusercontent.com/dc42919f127696fda8ed2e45e3ec64545e707d0569a7f96bbc4c9b603c081eab/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f77696c6c7970656c7a2f71756575652d6d6f6e69746f722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/willypelz/queue-monitor)[![MIT Licensed](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)[![Total Downloads](https://camo.githubusercontent.com/22e2955c2f07bc95ac04023e9f9096ee38b745d9a2d9ff7e297319172e95a1c5/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f77696c6c7970656c7a2f71756575652d6d6f6e69746f722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/willypelz/queue-monitor)

A powerful Laravel queue monitoring package with database driver support, advanced metrics, and operational controls.

**Better than Horizon** - Full database driver support, advanced controls, lightweight, and easy to install.

[![Queue Monitor Dashboard](https://camo.githubusercontent.com/4828f0a10e3011d8d45a384309d38a4f4550a467509fa506e00fcbe142c0be82/68747470733a2f2f7669612e706c616365686f6c6465722e636f6d2f383030783430302f3446343645352f4646464646463f746578743d51756575652b4d6f6e69746f722b44617368626f617264)](https://camo.githubusercontent.com/4828f0a10e3011d8d45a384309d38a4f4550a467509fa506e00fcbe142c0be82/68747470733a2f2f7669612e706c616365686f6c6465722e636f6d2f383030783430302f3446343645352f4646464646463f746578743d51756575652b4d6f6e69746f722b44617368626f617264)

Table of Contents
-----------------

[](#table-of-contents)

- [Features](#features)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [Configuration](#configuration)
- [Usage](#usage)
- [API Documentation](#api-endpoints)
- [Comparison with Horizon](#comparison-with-horizon)
- [Requirements](#requirements)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [License](#license)

Features
--------

[](#features)

- 📊 **Real-time Dashboard** - Monitor queue jobs with live updates
- 🎛️ **Operational Controls** - Pause, resume, throttle, and retry queues
- 📈 **Rich Metrics** - Track job success rates, runtime, and failures
- 💾 **Database Driver Support** - Full support for database queue driver
- 🚀 **Performance Optimized** - Indexed queries and efficient data retention
- 🔒 **Secure** - Customizable middleware for dashboard protection

Installation
------------

[](#installation)

### Quick Install

[](#quick-install)

```
composer require willypelz/queue-monitor
php artisan queue-monitor:install
```

That's it! Visit `http://your-app.test/queue-monitor` to see your dashboard.

> **✅ Auto-Discovery**: This package supports Laravel's auto-discovery feature. The service provider is automatically registered when you install the package.

> **🔒 HTTPS Ready**: All external resources use HTTPS to prevent mixed-content blocking. Works seamlessly with secure applications.

### Manual Installation

[](#manual-installation)

Install the package via Composer:

```
composer require willypelz/queue-monitor
```

Publish the configuration and migrations:

```
php artisan vendor:publish --provider="QueueMonitor\QueueMonitorServiceProvider"
```

Or publish individually:

```
# Publish config
php artisan vendor:publish --tag=queue-monitor-config

# Publish migrations
php artisan vendor:publish --tag=queue-monitor-migrations

# Publish views (optional, for customization)
php artisan vendor:publish --tag=queue-monitor-views
```

Run the migrations:

```
php artisan migrate
```

Configuration
-------------

[](#configuration)

The configuration file is published to `config/queue-monitor.php`:

```
return [
    // Dashboard route path
    'path' => 'queue-monitor',

    // Middleware for dashboard access
    'middleware' => ['web'],

    // Storage driver: 'database' or 'redis'
    'driver' => env('QUEUE_MONITOR_DRIVER', 'database'),

    // Redis configuration (when driver is 'redis')
    'redis' => [
        'connection' => env('QUEUE_MONITOR_REDIS_CONNECTION', 'default'),
    ],

    // Retention period in days
    'retention_days' => 14,

    // UI refresh interval
    'ui' => [
        'refresh_seconds' => 10,
    ],

    // Control settings
    'control' => [
        'pause_release_seconds' => 10,
        'throttle_default_rate_per_minute' => 60,
        'throttle_release_seconds' => 5,
    ],
];
```

### Storage Drivers

[](#storage-drivers)

**Database Driver (Default)**

```
QUEUE_MONITOR_DRIVER=database
```

- Persistent storage
- SQL queries supported
- Best for moderate volume

**Redis Driver (High Performance)**

```
QUEUE_MONITOR_DRIVER=redis
QUEUE_MONITOR_REDIS_CONNECTION=default
```

- 20x faster than database
- Perfect for high-volume queues
- Memory-based with TTL expiration
- See [Redis Driver Guide](docs/redis-driver.md) for details

### Securing the Dashboard

[](#securing-the-dashboard)

Add authentication middleware to protect the dashboard:

```
'middleware' => ['web', 'auth'],
```

Or create custom middleware for role-based access:

```
'middleware' => ['web', 'auth', 'can:view-queue-monitor'],
```

Usage
-----

[](#usage)

### Accessing the Dashboard

[](#accessing-the-dashboard)

Once installed, visit the dashboard at:

```
http://your-app.test/queue-monitor

```

### Dashboard Features

[](#dashboard-features)

- **Stats Overview**: View total, processed, failed, and processing jobs
- **Average Runtime**: Monitor job performance
- **Recent Jobs**: See the latest job executions
- **Queue Controls**: Pause, resume, throttle, or retry queues

### Queue Controls

[](#queue-controls)

#### Pause Queue

[](#pause-queue)

Temporarily stop processing jobs on a specific queue:

```
# Via Dashboard UI or API
POST /queue-monitor/api/control/pause
{
    "connection": "database",
    "queue": "default"
}
```

#### Resume Queue

[](#resume-queue)

Resume a paused queue:

```
POST /queue-monitor/api/control/resume
{
    "connection": "database",
    "queue": "default"
}
```

#### Throttle Queue

[](#throttle-queue)

Limit the number of jobs processed per minute:

```
POST /queue-monitor/api/control/throttle
{
    "connection": "database",
    "queue": "default",
    "rate": 60
}
```

#### Retry Failed Jobs

[](#retry-failed-jobs)

Retry all failed jobs on a queue:

```
POST /queue-monitor/api/control/retry
{
    "connection": "database",
    "queue": "default"
}
```

### Programmatic Usage

[](#programmatic-usage)

You can also interact with the queue monitor programmatically:

```
use QueueMonitor\Services\QueueControlService;

$control = app(QueueControlService::class);

// Pause a queue
$control->pause('database', 'default');

// Resume a queue
$control->resume('database', 'default');

// Throttle a queue
$control->throttle('database', 'default', 30);

// Check if paused
$isPaused = $control->isPaused('database', 'default');

// Get throttle rate
$rate = $control->getThrottleRate('database', 'default');
```

### Pruning Old Records

[](#pruning-old-records)

Keep your database clean by pruning old job records:

```
# Prune records older than 14 days (default)
php artisan queue-monitor:prune

# Prune records older than 7 days
php artisan queue-monitor:prune --days=7
```

Schedule automatic pruning in `app/Console/Kernel.php`:

```
protected function schedule(Schedule $schedule)
{
    $schedule->command('queue-monitor:prune')->daily();
}
```

Driver Comparison
-----------------

[](#driver-comparison)

Choose the right storage driver for your needs:

FeatureDatabase DriverRedis Driver**Performance**~10ms per job~0.5ms per job (20x faster)**Throughput**200 jobs/sec5,000+ jobs/sec**Storage**Persistent (disk)Memory with TTL**Data Retention**PermanentConfigurable expiration**Queries**Full SQL supportKey-value only**Setup**Requires migrationsNo migrations needed**Best For**Low-medium volume, SQL analyticsHigh volume, real-time updates**Memory Usage**Database storageRAM (1-5 KB per job)### When to Use Redis

[](#when-to-use-redis)

✅ Processing 1000+ jobs per minute ✅ Multiple servers sharing monitoring data ✅ Real-time dashboard updates required ✅ Want to reduce database load ✅ Already using Redis for cache/queues

### When to Use Database

[](#when-to-use-database)

✅ Low to medium job volume ✅ Need permanent data storage ✅ SQL queries for reporting ✅ Single server deployment ✅ Compliance/audit requirements

**To use database driver instead:**

```
# .env
QUEUE_MONITOR_DRIVER=database
```

**See [Redis Driver Guide](docs/redis-driver.md) for detailed comparison and migration instructions.**

API Endpoints
-------------

[](#api-endpoints)

All API endpoints are prefixed with `/queue-monitor/api`:

MethodEndpointDescriptionGET`/stats`Get dashboard statisticsGET`/jobs`Get recent jobsPOST`/control/pause`Pause a queuePOST`/control/resume`Resume a queuePOST`/control/throttle`Throttle a queuePOST`/control/retry`Retry failed jobsComparison with Horizon
-----------------------

[](#comparison-with-horizon)

FeatureQueue MonitorHorizonDatabase Driver✅ Full support❌ Redis onlyCustom Controls✅ Pause, throttle, retry⚠️ LimitedLightweight✅ Minimal overhead❌ HeavyEasy Installation✅ Composer only⚠️ Requires configReal-time UI✅ Vue 3✅ Vue 2Metrics Depth✅ Rich stats✅ Rich statsOpen Source✅ MIT✅ MITRequirements
------------

[](#requirements)

- PHP 8.1 or higher
- Laravel 10.x, 11.x, or 12.x
- Database (MySQL, PostgreSQL, SQLite, etc.) or Redis

Documentation
-------------

[](#documentation)

- [Installation Guide](docs/installation.md) - Detailed installation instructions
- [Redis Driver Guide](docs/redis-driver.md) - **NEW!** High-performance Redis storage
- [Queue Controls](docs/controls.md) - Pause, resume, throttle, and retry
- [API Documentation](docs/api.md) - RESTful API endpoints
- [Middleware Setup](docs/middleware.md) - Job middleware configuration
- [Security Considerations](docs/security.md) - HTTPS, mixed-content prevention, and access control
- [API Endpoint Fix](docs/api-endpoint-fix.md) - Fix blocked:mixed-content for API calls
- [Advanced Features](docs/advanced.md) - Performance optimization, alerting, and more

Contributing
------------

[](#contributing)

Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.

Changelog
---------

[](#changelog)

Please see [CHANGELOG.md](CHANGELOG.md) for recent changes.

Security
--------

[](#security)

If you discover any security-related issues, please email  instead of using the issue tracker.

Credits
-------

[](#credits)

- **Author**: Willy Pelz
- **Inspired by**: Laravel Horizon, romanzipp/laravel-queue-monitor
- **Built with**: Laravel, Vue.js 3, Tailwind CSS

Support
-------

[](#support)

- **Issues**: [GitHub Issues](https://github.com/willypelz/queue-monitor/issues)
- **Discussions**: [GitHub Discussions](https://github.com/willypelz/queue-monitor/discussions)
- **Documentation**: [docs/](docs/)

License
-------

[](#license)

This package is open-sourced software licensed under the [MIT license](LICENSE).

---

**Made with ❤️ for the Laravel community**

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance81

Actively maintained with recent releases

Popularity16

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 53.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~5 days

Total

7

Last Release

102d ago

Major Versions

v1.2.0 → v2.0.02026-03-19

PHP version history (3 changes)v1.0.0PHP ^8.1

v1.1.0PHP ^8.2

v2.1.0PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/4a31328ff75e69b28bb18cc555f08e3908b347665541e8d4678328233f7ad43b?d=identicon)[willypelz](/maintainers/willypelz)

---

Top Contributors

[![willypelz](https://avatars.githubusercontent.com/u/23083380?v=4)](https://github.com/willypelz "willypelz (8 commits)")[![michaelasefon](https://avatars.githubusercontent.com/u/160655740?v=4)](https://github.com/michaelasefon "michaelasefon (7 commits)")

---

Tags

laraveldatabaseMetricsqueuejobsmonitorhorizon

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/willypelz-queue-monitor/health.svg)

```
[![Health](https://phpackages.com/badges/willypelz-queue-monitor/health.svg)](https://phpackages.com/packages/willypelz-queue-monitor)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M132](/packages/laravel-pulse)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M131](/packages/roots-acorn)[mongodb/laravel-mongodb

A MongoDB based Eloquent model and Query builder for Laravel

7.1k8.4M96](/packages/mongodb-laravel-mongodb)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.6k29.9M147](/packages/laravel-cashier)[flarum/core

Delightfully simple forum software.

201.4M2.3k](/packages/flarum-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
