Queues y jobs en Laravel con driver database
Clase 15 de 33 • Curso Avanzado de Laravel
Contenido del curso
Entorno de trabajo y repaso de Laravel
Manejo de tu base de datos con Laravel
La terminal de Laravel
Eventos y tareas de Laravel
Manejo de errores
El corazón de Laravel
Creación de paquetes
- 26

Cómo crear paquetes Laravel con Composer
08:51 min - 27
Propiedades para manejo de dependencias
02:02 min - 28
Comprende el archivo composer.json
02:23 min - 29

Cómo Composer carga clases automáticamente
04:18 min - 30

Crear mis propios Services Providers
08:58 min - 31

Cómo publicar archivos con Service Provider
04:12 min - 32

Instalando paquetes desde GitHub con Composer
10:35 min - 33

Publicar tu paquete PHP en Packages
03:12 min
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.
¿Cómo se ve el código del job y del mailable?
Crea el job y el Mailable:
php artisan make:job SendWelcomeEmail php artisan make:mail WelcomeMail
Crea la vista para el correo en resources/views/Welcome/mail.blade.php:
<h1>Bienvenido a la aplicación</h1>
Implementa el job con el método handle y el facade de correo:
<?php namespace App\Jobs; use App\Mail\WelcomeMail; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Illuminate\Support\Facades\Mail; class SendWelcomeEmail implements ShouldQueue { use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; public string $userEmail; public function __construct(string $userEmail) { $this->userEmail = $userEmail; } public function handle(): void { Mail::to($this->userEmail)->send(new WelcomeMail()); } }
Despacha el job al verificar el usuario en tu controller (por ejemplo, VerificationController método verified):
public function verified(Request $request) { dispatch(new SendWelcomeEmail($request->user()->email)); }
- El helper dispatch envía el job a la cola.
- El método handle contiene la lógica de negocio.
¿Cómo ejecutar el worker y ver el correo enviado?
Procesa la cola desde la terminal:
php artisan queue:work # o php artisan queue:listen
- Verás en consola cuándo un job se procesa.
- El correo llegará con el asunto de tu Mailable, por ejemplo: «Bienvenido a la aplicación».
- En ambientes de prueba puedes validar el envío con herramientas como Mailtrap.
¿Qué considerar en producción para queue work?
- Usa un gestor de procesos como Supervisor.
- Mantén corriendo:
php artisan queue:work. - Garantiza reinicios automáticos si el proceso se detiene.
¿Te gustaría que cubra reintentos, tiempos de espera o colas nombradas? Comparte tus dudas y comenta qué necesitas implementar a continuación.