GlosarioArquitectura

¿Qué es Job?

Los Jobs en Laravel son clases que encapsulan tareas que pueden ejecutarse de forma asincrona en colas de trabajo (queues), como enviar emails, procesar imagenes o generar reportes sin bloquear la respuesta HTTP.

Jobs

Los Jobs representan tareas que pueden ejecutarse de forma sincrona o asincrona. Son ideales para operaciones pesadas que no deben bloquear la respuesta al usuario.

Crear un job

php artisan make:job ProcessPodcastUpload
class ProcessPodcastUpload implements ShouldQueue
{
    use Queueable;

    public int $tries = 3;
    public int $backoff = 60;
    public int $timeout = 300;

    public function __construct(
        private Podcast $podcast
    ) {}

    public function handle(AudioProcessor $processor): void
    {
        $processor->process($this->podcast->audio_path);

        $this->podcast->update(['processed' => true]);
    }

    public function failed(Throwable $exception): void
    {
        Log::error('Error procesando podcast', [
            'podcast_id' => $this->podcast->id,
        ]);
    }
}

Despachar jobs

// Enviar a la cola (asincrono)
ProcessPodcastUpload::dispatch($podcast);

// Con opciones
ProcessPodcastUpload::dispatch($podcast)
    ->onQueue('media')
    ->delay(now()->addMinutes(5));

// Encadenar jobs
Bus::chain([
    new ProcessPodcastUpload($podcast),
    new PublishPodcast($podcast),
    new NotifySubscribers($podcast),
])->dispatch();

// Ejecutar sincrono (sin cola)
ProcessPodcastUpload::dispatchSync($podcast);

Los jobs son esenciales para construir aplicaciones escalables. Se procesan con php artisan queue:work y soportan multiples drivers como Redis, Amazon SQS y base de datos.