LARAVEL

Laravel Horizon & Redis Queues

February 24, 2024 14 min read

Introduction

Laravel Horizon provides a beautiful dashboard and code-driven configuration for your Redis queues. It monitors job throughput, failed jobs, and provides real-time insights.

Installation

composer require laravel/horizon

// Publish assets
php artisan horizon:install

// Configure queue connection in config/queue.php
'redis' => [
    'driver' => 'redis',
    'connection' => 'default',
    'queue' => env('REDIS_QUEUE', 'default'),
    'retry_after' => 90,
],

Configuration

// config/horizon.php

'environments' => [
    'production' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['emails', 'notifications'],
            'balance' => 'auto',
            'processes' => 10,
            'tries' => 3,
        ],
    ],
    
    'local' => [
        'supervisor-1' => [
            'connection' => 'redis',
            'queue' => ['default'],
            'balance' => 'simple',
            'processes' => 3,
            'tries' => 3,
        ],
    ],
],

Supervisors

Supervisors manage worker processes:

  • Balance Strategies - auto, simple, or false
  • Processes - Number of workers
  • Min & Max - For auto balancing

Monitoring

// Start Horizon
php artisan horizon

// View Horizon dashboard at /horizon
// Features:
// - Job throughput visualization
// - Failed job tracking
// - Job wait times
// - Recent jobs

// Terminate Horizon
php artisan horizon:terminate

// Purge failed jobs
php artisan horizon:purge

Summary

Laravel Horizon makes Redis queue management effortless. Use it to monitor job performance and scale workers dynamically.

For more Laravel tutorials, see Queues & Jobs.