Colas y Jobs en Laravel

Intermedio
Laravel
Laravel
Actualizado: 27/03/2026

Por qué usar colas

Algunas operaciones (envío de correos, generación de PDFs, procesamiento de imágenes) ralentizan la petición HTTP. Las colas permiten encolar el trabajo y devolver una respuesta rápida al usuario; un worker procesa los jobs en segundo plano.

Usar colas mejora la experiencia de usuario y la escalabilidad. Laravel ofrece drivers para sync, database, redis, sqs y otros.

Crear un Job

php artisan make:job ProcessOrder

Un Job típico recibe datos en el constructor, implementa handle() y opcionalmente define reintentos y timeouts:

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;

class ProcessOrder implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct(
        public int $orderId
    ) {}

    public function handle(): void
    {
        // Lógica de procesamiento
    }
}

ShouldQueue indica que el job debe encolarse en lugar de ejecutarse de forma síncrona. SerializesModels serializa modelos Eloquent de forma segura.

Despachar Jobs

Desde un controlador o servicio:

ProcessOrder::dispatch($orderId);

Para ejecución diferida (por ejemplo, 1 minuto después):

ProcessOrder::dispatch($orderId)->delay(now()->addMinute());

Para ejecutar después de enviar la respuesta HTTP al cliente (útil para no bloquear la respuesta):

ProcessOrder::dispatchAfterResponse($orderId);

Configuración del driver

En .env define QUEUE_CONNECTION. Opciones comunes:

  • sync: ejecuta jobs de forma síncrona (útil en desarrollo).
  • database: usa una tabla jobs; requiere php artisan queue:table y migración.
  • redis: requiere Redis configurado.

Para el driver database:

php artisan queue:table
php artisan migrate

Ejecutar el worker

Un proceso mantiene vivo el worker que consume la cola:

php artisan queue:work

En producción suele usarse un gestor de procesos (Supervisor, systemd) para mantener el worker activo y reiniciarlo si falla.

Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Laravel es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de Laravel

Explora más contenido relacionado con Laravel y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

Crear y despachar Jobs para procesar tareas en segundo plano con el sistema de colas.

Cursos que incluyen esta lección

Esta lección forma parte de los siguientes cursos estructurados con rutas de aprendizaje