🧵 Jobs y Queues: tareas en segundo plano

🧵 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
Consejo: Usa colas para tareas como:
  • 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.

Publicar un comentario

0 Comentarios