Ir al contenido
PHP Argentina 🐘

El evento JobQueueing en Laravel: Una herramienta poderosa para la gestión de colas

laravel, php, colas, jobs, eventos, queue, performance2 minutos de lectura

Job Queueing en Laravel banner

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 JobQueueing
5Event::listen(function (JobQueueing $event) {
6 // Extraer información sobre el trabajo que se está encolando
7 $job = $event->job; // Trabajo que se está encolando
8 $connectionName = $event->connectionName; // Nombre de la conexión de la cola
9 $payload = $event->payload; // Datos del trabajo
10
11 // Aquí puedes agregar lógica personalizada antes de que el trabajo entre en la cola
12});

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<?php
2
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 ServiceProvider
11{
12 public function boot(): void
13 {
14 // Crear un logger de trabajos para desarrollo local
15 Event::listen(function (JobQueueing $event) {
16 if (app()->environment('local')) {
17 Log::info('Encolando trabajo', [
18 'trabajo' => get_class($event->job), // Clase del trabajo
19 'conexión' => $event->connectionName, // Conexión utilizada
20 'cola' => $event->payload['queue'] ?? 'default' // Nombre de la cola
21 ]);
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.

© 2025 por PHP Argentina 🐘.