Ir al contenido

El medio de los artesanos de la web jueves, 20 de agosto de 2026

MailStudio
Back-end

Laravel 13.26 refuerza la gestión de colas

Laravel 13.26.0, publicada el 18 de agosto de 2026, añade el reenvío de trabajos entre colas, el debounce de listeners y un evento de liberación. El parche 13.26.1, salido el mismo día, revierte una adición a Eloquent considerada prematura.

Laravel 13.26.0, publicada el 18 de agosto de 2026, concentra casi todas sus novedades en la capa de colas. Un evento de liberación de trabajos, un método de reenvío entre colas y la extensión del debounce a los listeners encolados forman el núcleo de esta entrega semanal, mientras que el parche 13.26.1, salido unas horas después, revierte una adición considerada prematura.

Qué cambia la versión 13.26

La rama 13.x, abierta el 17 de marzo de 2026, mantiene su ritmo de publicación semanal. La 13.26.0 no rompe ninguna API, pero densifica la capa de procesamiento asíncrono: la que sostiene el envío de correos, los tratamientos por lotes y las integraciones de terceros en la mayoría de aplicaciones en producción.

Las incorporaciones se reparten entre la gestión de colas, el ORM Eloquent y la compatibilidad del ecosistema. La tabla siguiente resume las entradas más estructurales del changelog oficial.

IncorporaciónÁmbitoPara qué sirve
Queue::forward()ColasRedirigir trabajos de una cola a otra cola o conexión sin tocar el código de despacho
Listeners con debounceEventosExtender el atributo DebounceFor, ya disponible en los trabajos, a los listeners encolados
Evento JobReleasedWorkerReaccionar cuando un trabajo vuelve a la cola, con la excepción adjunta si el fallo fue capturado
managedQueues()Cloud queueDeclarar las colas gestionadas del lado de la infraestructura de Laravel Cloud
Enums en inOrderOf()EloquentOrdenar un resultado según una enumeración en lugar de una lista de cadenas
Soporte de Guzzle 8EcosistemaAlinear el cliente HTTP con la última versión mayor de la librería

Queue::forward, redirigir sin tocar el despacho

El método Queue::forward() responde a una necesidad recurrente de los equipos que reorganizan su infraestructura de colas. Hasta ahora, cambiar la cola de destino de un trabajo obligaba a retocar cada punto de despacho o a introducir una capa de enrutado propia. El nuevo método traslada esa decisión a un único lugar.

use Illuminate\Support\Facades\Queue;

// Redirigir una cola hacia una cola FIFO en una conexión SQS
Queue::forward('reports', 'reports.fifo', 'sqs');

// Reenviar varias colas de una sola pasada
Queue::forward([
    'reports' => 'reports.fifo',
    'emails'  => 'emails.fifo',
], connection: 'sqs');

La ventaja es desacoplar la topología de las colas del código de negocio. Una migración de Redis a SQS, o la introducción de una cola FIFO para garantizar el orden, se gobierna desde la configuración de reenvío, sin redesplegar los servicios emisores.

Mover un trabajo de una cola a otra no debería obligar a reabrir el código que lo emite.

Listeners con debounce y evento de liberación

El debounce de trabajos existía desde la 13.6.0 mediante el atributo DebounceFor: cuando un mismo evento se dispara en ráfaga para un recurso dado, solo se procesa la última instancia dentro de la ventana definida. La 13.26 extiende ese comportamiento a los listeners encolados, lo que cubre los casos en que la lógica reactiva vive en un listener y no en un trabajo dedicado.

use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\Attributes\DebounceFor;

class SyncSearchIndex implements ShouldQueue
{
    #[DebounceFor(seconds: 30, using: ['product'])]
    public function handle(ProductUpdated $event): void
    {
        // Se ejecuta una vez por producto y ventana de 30 s
    }
}

En paralelo, el evento JobReleased añadido al worker permite observar las devoluciones a la cola. Cuando un trabajo falla, es capturado por un catch() y luego liberado de nuevo, la excepción queda ahora adjunta al evento, lo que facilita la instrumentación y el seguimiento de los reintentos.

Punto de atención. La 13.26.1, publicada el mismo día, revierte la incorporación de orWhereKey y orWhereKeyNot al constructor de Eloquent. Fijar la 13.26.1 en lugar de la 13.26.0 evita construir sobre un método retirado pocas horas después de aparecer.

Un parche el mismo día

La secuencia 13.26.0 y luego 13.26.1 en una misma jornada ilustra la mecánica de la rama actual: las incorporaciones llegan rápido, y algunas se van igual de rápido cuando aparece un caso límite. Para un proyecto en producción la regla se mantiene: seguir las versiones de parche y leer el changelog antes de subir de versión, en lugar de automatizar una actualización ciega hacia la última etiqueta publicada.

Lo esencial

  • Queue::forward() centraliza el reenvío de trabajos entre colas y conexiones.
  • El debounce se aplica ahora a los listeners encolados, no solo a los trabajos.
  • El evento JobReleased hace observables las devoluciones a la cola, excepción incluida.
  • La 13.26.1 anula la incorporación de orWhereKey: apuntar a esa versión de parche.

En mis proyectos, la parte que más se rompe en producción nunca es el controlador: es la cola. Un trabajo que se repite en bucle, un mismo evento tratado diez veces seguidas. El debounce de listeners y el evento JobReleased van justo en la dirección de lo que yo apañaba a mano. El reenvío lo espero sobre todo para las migraciones de alojamiento, donde tocar el código de despacho siempre da miedo. — Simon Janvier

Para profundizar

Notas de versión oficiales: laravel/framework v13.26.0 en GitHub.

También en Mail Studio

Compartir LinkedIn Bluesky Hacker News E-mail

Leer también