Optimiza el rendimiento en Laravel con procesamiento en segundo plano y respuestas rápidas al cliente. Aquí aprenderás, paso a paso, a configurar queues y jobs con el driver database, crear un Mailable y ejecutar un worker que procese tareas sin bloquear tu aplicación.
¿Qué son y cómo funcionan las queues y jobs en Laravel?
Las queues permiten delegar tareas pesadas a segundo plano. Un job encapsula la tarea, se almacena en una cola y el cliente recibe la respuesta sin esperar.
El cliente envía una petición. La aplicación crea un job y lo encola.
Un worker procesa los jobs cola por cola en segundo plano.
Resultado: respuestas inmediatas y servidor más estable.
¿Por qué usar procesamiento en segundo plano?
Enviar correos puede ser costoso. Mejor en cola.
Respuestas HTTP más rápidas.
Menos carga pico en el servidor.
¿Cómo configurar el driver database y crear la tabla de jobs?
Laravel ofrece varios drivers y prerrequisitos. Aquí se usa el driver database para almacenar jobs en la base de datos.
¿Qué comandos artisan necesitas?
Ejecuta la migración de la tabla de jobs y aplica cambios:
php artisan queue:table
php artisan migrate
Configura la conexión de cola en tu archivo de entorno:
QUEUE_CONNECTION=database
La tabla jobs almacenará cada tarea pendiente.
Conexión de cola ajustada a database.
¿Cómo crear y despachar un job que envía un Mailable y procesarlo con un worker?
Objetivo: enviar un correo de bienvenida cuando el usuario verifica su email.
En este curso tampoco se explicó lo de laravel ui, para que puedan acceder a la pantalla de registro tienen que correr el comando:
php artisan ui bootstrap --auth && npm install && npm run dev
Dejo el enlace al commit de esta clase con Laravel 8:
eso ya se vio en cursos pasados
Cuando usar queue:work y cuándo queue:listen
.
Para ambientes productivos la recomendación es trabajar con queue:work ya que la ejecución de los jobs se hace de manera más eficiente (hay datos de la aplicación claves para ello que se almacenan en memoria).
.
Para ambientes en local la recomendación es trabajar con queue:listen, de esta forma los cambios que se hacen en el desarrollo involucrado se reflejarán automáticamente (no hay información que se guarde en memoria).
.
Fuente: https://laravel-news.com/queuelisten
Gracias por el aporte!
A diferencia de los métodos antes vistos, Queue y Jobs se diferencian en no añadirle tiempo al procesamiento de las solicitudes del cliente. Y ejecutar estas en otro momento.
Job: Conjunto de instrucciones. También llamado TAREA
Queue: Registro de TAREAS. Estas tienen cantidad de intentos, horarios disponibles, entre otras.
Para más información:
es cierto que parte de educarte debes ir un poco mas alla y averiguar por ti mismo, pero este curso me ha decepcionado explica todo por encima de forma muy mala,rapida y decepcionante
totalmente de acuerdo!
El comando que tenemos que tener activo con supervisor es "queue:listen" ?
Puedes tener:
php artisan queue:listen
O
php artisan queue:work
no pueden ejecutar esas colas de trabajo en el servidos a traves de un cron job y ejecutando el comando de laravel
Hay algún lado que me explique a cómo hacer los queues con redis?
los Mail tambien pueden implementar SholdQueue o sea no se hace necesario crear un Job solo para enviar un email.
Tengo la tabla jobs creada en mi DB
pero no aparece nada...
NO tengo phpstorm , estoy en vscode y no me funcion bien la extencion de sqlite por eso use mysql
Sera por ahi ?
Hola, yo estoy utilizando postgres, y al principio no me generaba los Job y probe en una ruta especifica por ejemplo:
como para comprobar si realmente funciona, y me lo genero! el problema mio es que realmente es que estaba tratando de ejecutar una función (que el profe puso) pero nunca se llamaba. Fijate si por ahí eso te esta pasando.
Saludos
Para enviar una respuesta rapida se usan la colas y jobs
ME gusto este rollo esta muy bien nunca lo habia usado pero ya les vi otros usos
en el caso de que tengamos un método que haga una un proceso en miles de registros, y también demore en tiempo, es aconsejable asignarlo a un job? Como podemos saber que todo se completo correctamente si esta en background?
Asi es, los procesos que son largos es recomendable que sean Jobs. Para saber si se completo o no al momento de terminar puedes enviar una noticación o correo.