🧵 Jobs y Queues: tareas en segundo plano
Aprende a ejecutar tareas en segundo plano con Laravel Queues
Laravel ofrece un sistema poderoso para ejecutar tareas largas o repetitivas en segundo plano mediante Jobs y Queues. Estas herramientas ayudan a mejorar el rendimiento y la experiencia del usuario, delegando procesos pesados (como el envío de correos o generación de reportes) fuera del flujo principal.
⚙️ ¿Qué es una Queue?
Una Queue (cola) almacena tareas pendientes llamadas Jobs para ser procesadas más tarde por un
worker o proceso en segundo plano.
Laravel puede usar varios drivers para colas como database, redis, beanstalkd, o sync.
🧩 Crear un Job en Laravel
Para crear un nuevo Job, ejecuta el siguiente comando en tu terminal:
php artisan make:job EnviarCorreoBienvenida
Esto genera un archivo en app/Jobs/EnviarCorreoBienvenida.php.
Ejemplo de contenido básico:
namespace App\Jobs;
use App\Mail\CorreoBienvenida;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use Mail;
class EnviarCorreoBienvenida implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
public $usuario;
public function __construct($usuario)
{
$this->usuario = $usuario;
}
public function handle(): void
{
Mail::to($this->usuario->email)->send(new CorreoBienvenida($this->usuario));
}
}
El método handle() contiene la lógica que se ejecutará en segundo plano.
El Job implementa ShouldQueue para ser procesado por una cola.
🚀 Enviar un Job a la cola
Desde un controlador o evento, puedes enviar el Job así:
use App\Jobs\EnviarCorreoBienvenida;
use App\Models\User;
public function registrar(Request $request)
{
$user = User::create($request->all());
EnviarCorreoBienvenida::dispatch($user);
return redirect()->back()->with('success', 'Usuario registrado, el correo se enviará en segundo plano.');
}
🧠 Procesar la cola
Para ejecutar las tareas en cola, abre tu terminal y ejecuta:
php artisan queue:work
Esto iniciará el worker que procesará los Jobs pendientes.
💬 Ejemplo visual: simulador de tarea en segundo plano
A continuación verás una simulación de cómo Laravel procesa un Job en segundo plano. Presiona el botón para ejecutar una tarea ficticia (como enviar un correo).
🧵 Simulador de Cola de Trabajo
Haz clic en el botón para procesar una tarea:
📦 Configuración de colas
En el archivo .env puedes definir el driver que Laravel usará para manejar las colas:
QUEUE_CONNECTION=database
Si eliges database, debes crear la tabla de Jobs con:
php artisan queue:table
php artisan migrate
📚 Ejemplo visual de tabla de Jobs
| ID | Job | Estado | Intentos | Creado |
|---|---|---|---|---|
| 1 | EnviarCorreoBienvenida | Procesado | 1 | 2025-11-02 10:45:22 |
| 2 | GenerarReporteMensual | En cola | 0 | 2025-11-02 10:46:10 |
- Enviar correos masivos.
- Procesar imágenes o videos.
- Generar reportes grandes.
- Sincronizar datos externos sin bloquear al usuario.
📋 En resumen:
- Los Jobs ejecutan tareas en segundo plano.
- Usa
dispatch()para enviarlos a la cola. - Procesa la cola con
queue:work. - Mejoran el rendimiento y experiencia del usuario.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias