Laravel Horizon

Clase 17 de 33Curso Avanzado de Laravel

Resumen

Optimiza y monitorea tus colas de trabajo en Laravel con Laravel Horizon: un panel de control claro, balanceo de workers y configuración basada en código con Redis por defecto. Aprende cómo instalarlo en Unix, activarlo con Artisan y observar en tiempo real tus jobs pendientes, completados y fallidos desde su dashboard.

¿Qué es Laravel Horizon y qué resuelve?

Laravel Horizon ofrece un panel de control y un sistema configurable de colas para Laravel. Permite ver el estado de las colas, detectar fallos y mover workers entre colas para evitar cuellos de botella mediante un balance.

  • Panel con dashboard para estado, métricas y actividad reciente de jobs.
  • Monitoreo de jobs pendientes, completados y fallidos.
  • Balanceo de workers: cuando una cola se llena, Horizon puede mover procesos a la cola que lo necesita.
  • Configuración basada en código: versionable junto al proyecto.
  • Conexión por defecto a Redis para la ejecución de colas.

¿Cómo se instala y configura en Unix con Redis?

Requiere una extensión disponible en sistemas Unix. Se recomienda usar una máquina virtual (acceso por VSSH) para la instalación. El flujo es directo: instalar el paquete, publicar configuración y ajustar environments en el archivo de configuración.

composer require Laravel Horizon php artisan horizon install
  • El comando de instalación publica los archivos de configuración y el service provider.
  • Abre config/horizon.php y ajusta “Environments”.
  • Define cuántos workers usar por entorno, la conexión Redis y las colas a atender.
  • Selecciona el tipo de balance; en el ejemplo se usa el balance simple, con “diez procesos activos” y “ejecución hasta una vez” por trabajo.

¿Cómo se accede al panel y qué muestra?

Accede a la ruta web “/horizon”. Verás el dashboard y pestañas para monitoreo de colas, métricas y el listado de jobs (pendientes, completados y fallidos).

  • Estado del sistema: activo o inactivo.
  • Detalle por worker y procesos en ejecución.
  • Información de Supervisor y colas por defecto.

Para activarlo:

php artisan horizon

Este comando levanta el servicio de Horizon. Es equivalente a lo que antes se ejecutaba con “Q word”.

¿Cómo probar un job y observar resultados en el dashboard?

Crea un job y un comando para dispararlo con rapidez. Dentro del comando, usa el helper dispatch para encolar el job.

php artisan make:job TestJob
  • Define la firma del comando (por ejemplo, “test job”) y, si quieres, una descripción.
  • Al ejecutar Horizon en una terminal, corre el nuevo comando en otra para disparar el job:
php artisan test job
  • Verás en la terminal el procesamiento del job. En Horizon, se reflejará en la actividad de la última hora. En “completed jobs” podrás revisar sus características.

¿Cómo darle más sentido con un flujo tipo newsletter?

El comando puede disparar el job “test job” para enviar newsletters. Se invoca el comando de newsletter con una opción “-S” para que no haga preguntas y envíe directamente el correo.

  • El dashboard muestra el job en pendiente y luego completado.
  • Se visualiza el worker “Supervisor uno” con tres procesos procesando colas por defecto.
  • Puedes confirmar en terminal que el comando fue procesado y que se enviaron los correos.

En conjunto, dominarás: creación de eventos, uso de listeners convertidos en colas de trabajo, ejecución en segundo plano y monitoreo continuo con Laravel Horizon. ¿Qué parte del flujo te gustaría automatizar o visualizar mejor? Comparte tus dudas o tu caso y seguimos la conversación.