馃У 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