El evento JobQueueing en Laravel: Una herramienta poderosa para la gestión de colas
— laravel, php, colas, jobs, eventos, queue, performance — 2 minutos de lectura

El sistema de colas de Laravel se ha vuelto aún más potente gracias al nuevo evento JobQueueing. Este gancho pre-envío crea oportunidades frescas para monitorear y manipular trabajos justo antes de que ingresen al sistema de colas.
La arquitectura basada en eventos del sistema de colas de Laravel ya ofrece varios puntos de intervención en el ciclo de vida, como JobProcessing y JobProcessed. El evento JobQueueing amplía esta capacidad permitiendo acceder a una fase anterior: precisamente cuando un trabajo está a punto de ser enviado al proveedor de colas.
Aquí tienes un ejemplo sencillo de cómo implementar este nuevo evento:
1use Illuminate\Queue\Events\JobQueueing;2use Illuminate\Support\Facades\Event;3
4// Registrar un listener para el evento JobQueueing5Event::listen(function (JobQueueing $event) {6 // Extraer información sobre el trabajo que se está encolando7 $job = $event->job; // Trabajo que se está encolando8 $connectionName = $event->connectionName; // Nombre de la conexión de la cola9 $payload = $event->payload; // Datos del trabajo10
11 // Aquí puedes agregar lógica personalizada antes de que el trabajo entre en la cola12});
Esta funcionalidad abre numerosas aplicaciones prácticas para la gestión y monitoreo de colas. Por ejemplo, podrías implementar un registro específico para entornos de desarrollo:
1<?php2
3namespace App\Providers;4
5use Illuminate\Queue\Events\JobQueueing;6use Illuminate\Support\Facades\Event;7use Illuminate\Support\ServiceProvider;8use Illuminate\Support\Facades\Log;9
10class AppServiceProvider extends ServiceProvider11{12 public function boot(): void13 {14 // Crear un logger de trabajos para desarrollo local15 Event::listen(function (JobQueueing $event) {16 if (app()->environment('local')) {17 Log::info('Encolando trabajo', [18 'trabajo' => get_class($event->job), // Clase del trabajo19 'conexión' => $event->connectionName, // Conexión utilizada20 'cola' => $event->payload['queue'] ?? 'default' // Nombre de la cola21 ]);22 }23 });24 }25}
Este enfoque permite a los equipos construir tableros completos de actividad de colas o implementar lógica especializada que necesita ejecutarse justo antes de que los trabajos entren en el sistema de colas. Por ejemplo, podrías extender esta funcionalidad para:
- Agregar metadatos personalizados a los trabajos.
- Aplicar límites de velocidad para tipos específicos de trabajos.
- Redirigir dinámicamente trabajos a diferentes colas según la carga del sistema.
Con JobQueueing, Laravel proporciona una herramienta flexible y poderosa para optimizar y controlar el flujo de trabajos en tu aplicación.