Skip to main content

Qu’est-ce que Horizon

Laravel Horizon est un tableau de bord dédié aux queues Redis de Laravel. Débit des jobs, temps d’exécution, échecs — le tout en temps réel, avec une configuration des workers gérée par code.
Horizon complète les fonctionnalités de base. Lisez d’abord Queues et jobs et Redis est obligatoire en backend.

Installation

Horizon exige Redis comme backend. Vérifiez que QUEUE_CONNECTION (config/queue.php) vaut redis. Redis Cluster n’est pas pris en charge.
Installez via Composer.
Publiez les fichiers.
Cela génère config/horizon.php et app/Providers/HorizonServiceProvider.php.

Configuration

config/horizon.php

Ce fichier gère la configuration des workers. Le cœur est l’option environments.
Horizon utilise en interne une connexion Redis nommée horizon. Ne réutilisez pas ce nom dans config/database.php.

Superviseurs

Un environnement peut contenir plusieurs « superviseurs ». Un superviseur groupe des workers avec ses propres files, stratégie d’équilibrage et nombre de processus.

Defaults

Utilisez defaults pour partager des valeurs entre tous les superviseurs.

Mode maintenance

Par défaut Horizon ne traite pas les jobs en maintenance. Forcez avec force.

Tentatives max

0 = illimité.

Timeout

Définissez timeout quelques secondes en dessous de retry_after (config/queue.php). En balance auto, les jobs dépassant ce délai peuvent être tués.

Backoff

Attente entre les tentatives.

Stratégies d’équilibrage

Trois stratégies :
Ajuste automatiquement le nombre de workers selon la charge. minProcesses et maxProcesses fixent les bornes.
  • time : temps estimé pour vider la file
  • size : nombre de jobs
En auto, l’ordre des files n’indique pas la priorité. Utilisez plusieurs superviseurs pour forcer la priorité.
Nombre fixe de workers réparti à parts égales.
Ici, 5 processus par file.
Ordre strict, comme la queue par défaut, mais avec scaling selon l’accumulation.
Les jobs default passent toujours avant notifications.

Autorisation du dashboard

Le dashboard est accessible sur /horizon. En local, tout le monde y accède ; en production, restreignez via une gate. Éditez la méthode gate() de app/Providers/HorizonServiceProvider.php.
Sans authentification (IP filtering, etc.), rendez le paramètre optionnel.

Démarrer Horizon

Commandes

Local : redémarrage auto

horizon:listen redémarre Horizon quand un fichier change.

Supervisor en production

Faites tourner Horizon en continu avec Supervisor.

Installation

Config

Créez /etc/supervisor/conf.d/horizon.conf.
stopwaitsecs doit être supérieur à la durée du plus long job. Sinon Supervisor l’interromprait de force.

Démarrage

Déploiement

À chaque déploiement, redémarrez Horizon pour appliquer les changements.
Avec Supervisor en autostart=true / autorestart=true, il redémarre automatiquement.

Gestion des jobs

Tags

Horizon détecte automatiquement les modèles Eloquent liés à un job et pose des tags.
Personnalisez avec tags().
Pour un event listener, l’instance de l’événement est passée à tags().

Silence

Masquer certains jobs de la liste « Completed Jobs » via config/horizon.php.
Ou via l’interface Silenced.

Métriques et supervision

Le dashboard des métriques affiche débit et durée des jobs/files. Planifiez des snapshots réguliers.
Réinitialiser les métriques :

Notifications d’échec

Recevez des notifications quand une file s’allonge. Dans boot() de HorizonServiceProvider.

Seuils d’attente

Réglez waits dans config/horizon.php.
0 désactive la notification.

Gestion des jobs échoués

Suppression par ID ou UUID.
Purger une file :

Mise à jour

Consultez toujours le guide de mise à jour avant une montée de version majeure.

Pages associées

Queues et jobs

Bases des queues Laravel : création, dispatch, batch, échecs.

Redis

Configuration et usage de Redis, backend requis par Horizon.
Dernière modification le 13 juillet 2026