Zum Inhalt springen

Das Magazin für Web-Handwerker Donnerstag, 20. August 2026

Backend

Laravel 13.26 stärkt die Warteschlangen

Laravel 13.26.0, veröffentlicht am 18. August 2026, bringt die Weiterleitung von Jobs zwischen Warteschlangen, Debounce für Listener und ein Freigabe-Ereignis. Der Patch 13.26.1 nimmt am selben Tag eine als verfrüht bewertete Eloquent-Ergänzung zurück.

Laravel 13.26.0, veröffentlicht am 18. August 2026, bündelt fast alle Neuerungen in der Queue-Schicht. Ein Freigabe-Ereignis für Jobs, eine Weiterleitungsmethode zwischen Warteschlangen und Debounce für eingereihte Listener bilden den Kern dieser wöchentlichen Auslieferung — während der Patch 13.26.1, wenige Stunden später erschienen, eine als verfrüht bewertete Ergänzung zurücknimmt.

Was Version 13.26 verändert

Der am 17. März 2026 eröffnete Zweig 13.x hält seinen wöchentlichen Takt. 13.26.0 bricht keine API, verdichtet aber die asynchrone Verarbeitungsschicht — jene Schicht, die in den meisten Produktivanwendungen den Mailversand, die Stapelverarbeitung und die Anbindung von Drittdiensten trägt.

Die Ergänzungen verteilen sich auf Warteschlangen, das Eloquent-ORM und die Kompatibilität des Ökosystems. Die folgende Tabelle fasst die strukturell wichtigsten Einträge des offiziellen Changelogs zusammen.

ErgänzungBereichWozu sie dient
Queue::forward()WarteschlangenJobs in eine andere Warteschlange oder Verbindung umleiten, ohne den Dispatch-Code anzufassen
Listener mit DebounceEreignisseDas Attribut DebounceFor, bereits für Jobs verfügbar, auf eingereihte Listener ausweiten
Ereignis JobReleasedWorkerReagieren, wenn ein Job zurück in die Warteschlange geht — mit angehängter Ausnahme bei abgefangenem Fehler
managedQueues()Cloud queueDie von der Laravel-Cloud-Infrastruktur verwalteten Warteschlangen deklarieren
Enums in inOrderOf()EloquentEin Ergebnis nach einer Aufzählung statt nach einer Zeichenkettenliste sortieren
Guzzle-8-UnterstützungÖkosystemDen HTTP-Client auf die jüngste Hauptversion der Bibliothek bringen

Queue::forward: umleiten, ohne den Dispatch anzufassen

Die Methode Queue::forward() beantwortet einen wiederkehrenden Bedarf von Teams, die ihre Queue-Infrastruktur umbauen. Bislang bedeutete ein Wechsel der Zielwarteschlange, jede Dispatch-Stelle anzupassen oder eine eigene Verteilschicht einzuziehen. Die neue Methode verlagert diese Entscheidung an eine einzige Stelle.

use Illuminate\Support\Facades\Queue;

// Eine Warteschlange auf eine FIFO-Queue einer SQS-Verbindung umleiten
Queue::forward('reports', 'reports.fifo', 'sqs');

// Mehrere Warteschlangen in einem Durchgang umleiten
Queue::forward([
    'reports' => 'reports.fifo',
    'emails'  => 'emails.fifo',
], connection: 'sqs');

Der Gewinn liegt darin, die Queue-Topologie vom Fachcode zu entkoppeln. Eine Migration von Redis zu SQS oder die Einführung einer FIFO-Queue zur Reihenfolgesicherung wird dann allein über die Weiterleitungskonfiguration gesteuert — ohne erneutes Ausrollen der sendenden Dienste.

Einen Job von einer Warteschlange in eine andere zu verschieben sollte nicht dazu zwingen, den erzeugenden Code wieder aufzumachen.

Debounce für Listener und das Freigabe-Ereignis

Debounce für Jobs gibt es seit 13.6.0 über das Attribut DebounceFor: Wird dasselbe Ereignis für eine Ressource in Serie ausgelöst, läuft innerhalb des definierten Fensters nur die letzte Instanz. 13.26 weitet dieses Verhalten auf eingereihte Listener aus und deckt damit die Fälle ab, in denen die reaktive Logik in einem Listener statt in einem eigenen Job liegt.

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
    {
        // Läuft einmal pro Produkt und 30-Sekunden-Fenster
    }
}

Parallel dazu macht das neue Worker-Ereignis JobReleased Rückgaben an die Warteschlange beobachtbar. Scheitert ein Job, wird von einem catch() abgefangen und anschließend erneut freigegeben, hängt die Ausnahme nun am Ereignis — was Instrumentierung und Nachverfolgung von Wiederholungen deutlich erleichtert.

Achtung. Die am selben Tag veröffentlichte 13.26.1 nimmt die Ergänzung von orWhereKey und orWhereKeyNot im Eloquent-Builder zurück. Wer 13.26.1 statt 13.26.0 festschreibt, baut nicht auf einer Methode auf, die Stunden nach ihrer Einführung wieder entfernt wurde.

Ein Patch noch am selben Tag

Die Abfolge 13.26.0 und dann 13.26.1 an einem einzigen Tag zeigt die Mechanik des aktuellen Zweigs: Ergänzungen kommen schnell — und manche verschwinden ebenso schnell wieder, sobald ein Grenzfall auftaucht. Für ein Produktivprojekt gilt weiterhin: Patch-Versionen verfolgen und vor dem Sprung das Changelog lesen, statt ein blindes Update auf das zuletzt veröffentlichte Tag zu automatisieren.

Das Wichtigste

  • Queue::forward() bündelt die Umleitung von Jobs zwischen Warteschlangen und Verbindungen.
  • Debounce gilt nun auch für eingereihte Listener, nicht nur für Jobs.
  • Das Ereignis JobReleased macht Rückgaben an die Warteschlange beobachtbar, samt Ausnahme.
  • 13.26.1 nimmt orWhereKey zurück: auf diese Patch-Version zielen.

In meinen eigenen Projekten bricht in der Produktion nie der Controller — es ist die Warteschlange: ein Job, der sich in einer Schleife wiederholt, dasselbe Ereignis zehnmal hintereinander verarbeitet. Debounce für Listener und das Ereignis JobReleased gehen genau in die Richtung dessen, was ich bisher von Hand zusammengebastelt habe. Auf die Weiterleitung warte ich vor allem für Hosting-Migrationen, bei denen das Anfassen des Dispatch-Codes immer heikel ist. — Simon Janvier

Zum Weiterlesen

Offizielle Release Notes: laravel/framework v13.26.0 auf GitHub.

Ebenfalls bei Mail Studio

Teilen LinkedIn Bluesky Hacker News E-mail

Ebenfalls lesenswert