Laravel Horizon, colas en Laravel con Redis

arrow_back Blog

Muchas veces necesitamos crear procesos transparentes a los ojos de los usuarios pero complejos de procesar: procesamiento de vídeo, procesos en cascada, envío de múltiples correos electrónicos.

Para solucionar estas necesidades en el mundo del desarrollo web lo mejor sin duda es gestionar estos procesos a través de colas que se ejecuten en background.

Laravel por defecto nos ofrece un sistema de colas (queues), pero se ejecutan de forma síncrona, es decir, todo pasa a ojos del usuario. Por suerte, tenemos muchas formas de configurar el sistema de colas en Laravel para que pasen a segundo plano, las más populares sin duda son database y redis.

Laravel Horizon es mi opción preferida, más aún cuando trabajo con Laravel Forge, ya que todo queda configurado sin tener que hacer absolutamente nada.

En este tutorial vamos a cubrir un ejemplo sencillo pero que estoy seguro te ayudará a entender cómo funciona Laravel Horizon para gestionar colas en Laravel haciendo uso de Redis. La idea es realizar el envío de correos electrónicos a través de notificaciones a los usuarios de nuestra plataforma cuando se registren para dar la bienvenida.

Instalar y configurar Laravel Horizon

Toda la configuración publicada con el comando horizon:install cae en el archivo config/horizon.php, desde ahí podemos configurar todo lo que necesitemos.

Generando usuarios y notificación

Ahora vamos a crear 20 usuarios con nuestro DatabaseSeeder o utilizando Tinker y una notificación que se ejecute utilizando las colas de Laravel.

Configurar Redis en Laravel con Predis

En este punto, deberás tener instalador Redis en tu equipo, de otra forma, este sistema no funcionará. Una vez hecho, vamos a actualizar nuestro .env con lo siguiente:

Para que Predis funcione, deberemos instalarlo en nuestro proyecto:

Laravel Horizon Dashboard

Una de las mejores cosas de Laravel Horizon si nos ponemos superficiales es su Dashboard. Puedes acceder a él desde /horizon, configurable desde el archivo de configuración de Horizon. Ahí tenemos toda la información del sistema de colas con Redis gestionadas por Horizon.

Envío masivo de correos utilizando colas en Laravel con Redis

Ahora que lo tenemos todo listo, vamos a crear una ruta que envíe 20 correos electrónicos a 20 usuarios.

Si ejecutas la ruta anterior (asegúrate de configurar tu servidor de correos electrónicos) verás que el proceso se ejecuta en 1 o 2 segundos, pero además, verás que ningún correo se ha enviado a sus destinatarios. En su lugar, han quedado almacenados en las colas de Laravel Horizon con Redis.

Para poner en marcha Laravel Horizon sólo debemos abrir un terminal y ejecutar el siguiente comando:

A partir de ese momento, todos tus correos se empezarán a enviar y los nuevos procesos basados en colas con Redis que se vayan generando se irán procesando de forma automática.

Asegurando el Dashboard de Laravel Horizon

No desearás que cualquiera pueda acceder al Dashboard de Laravel Horizon. Para solucionar este inconveniente, Laravel nos ofrece el service provider HorizonServiceProvider, a través del método gate podremos permitir acceso a los correos que deseemos dentro de nuestro sitio.

Cursosdesarrolloweb Cursosdesarrolloweb

Cursosdesarrolloweb es una plataforma educativa con cursos y tutoriales en texto y vídeo.

Términos y condiciones Política de privacidad Formulario de contacto

Copyright 2024 © Todos los derechos reservados.

Contacto