Topics Queues & Notifications Horizon Queue Management
advanced 14 min read

Horizon Queue Management

Installing and configuring Horizon, dashboards, supervisor configuration, and monitoring queues.

Laravel Horizon

// Install: composer require laravel/horizon
// Publish: php artisan horizon:install

// config/horizon.php
return [
"environments" => [
"production" => [
"supervisor-1" => [
"connection" => "redis",
"queue" => ["high", "default", "low"],
"balance" => "auto",
"minProcesses" => 1,
"maxProcesses" => 10,
"tries" => 3,
],
],
"local" => [
"supervisor-1" => [
"connection" => "redis",
"queue" => ["default"],
"balance" => "simple",
"minProcesses" => 1,
"maxProcesses" => 3,
],
],
],
];

Balancing Strategies

// Auto balancing - redistributes workers based on queue load
"balance" => "auto",
// Simple balancing
"balance" => "simple",
// False (each supervisor runs all queues equally)
"balance" => false,

Horizon Dashboard Authorization

// In AppServiceProvider
Gate::define("viewHorizon", function (User $user) {
return $user->is_admin;
});

Running Horizon

// Start: php artisan horizon
// Pause: php artisan horizon:pause
// Continue: php artisan horizon:continue
// Snapshot: php artisan horizon:snapshot
// Status: php artisan horizon:status

Examples

<?php
// config/horizon.php supervisor for email queues
// 'supervisor-emails' => [
//     'connection' => 'redis',
//     'queue' => ['emails'],
//     'balance' => 'auto',
//     'minProcesses' => 1,
//     'maxProcesses' => 5,
//     'tries' => 3,
//     'timeout' => 60,
// ]

Your Notes

Sign in to take notes for this lesson.

Discussion

Sign in to join the discussion.

Flashcards

Sign in to create flashcards.