Web-Entwicklung

Warteschlange

Eine Warteschlange nimmt Aufgaben entgegen und lässt sie zeitversetzt von Hintergrundprozessen abarbeiten, während die auslösende Anfrage sofort beantwortet wird.

Warteschlangen entkoppeln Aufgaben, die Zeit brauchen, von der Anfrage eines Besuchers und halten damit die Antwortzeiten einer Anwendung stabil.

In einfachen Worten

Manche Aufgaben dauern länger, als ein Besucher auf eine Antwort warten möchte: Bilder in mehreren Größen erzeugen, einen Suchindex aktualisieren, Belege erstellen, E-Mails versenden, große Datenmengen übertragen. Werden sie innerhalb der Anfrage erledigt, wartet der Besucher mit. Eine Warteschlange nimmt die Aufgabe stattdessen als Auftrag entgegen und bestätigt den Eingang; die Anfrage ist damit beendet. Getrennte Prozesse holen die Aufträge nacheinander ab und arbeiten sie ab. Fehlgeschlagene Aufträge werden wiederholt oder in einen gesonderten Bereich gelegt, in dem sie sichtbar bleiben. Die Zahl dieser Prozesse bestimmt, wie viel gleichzeitig abgearbeitet wird.

Wozu brauche ich das?

Eingesetzt wird eine Warteschlange, sobald eine Aufgabe die Antwortzeit spürbar verlängert oder von außen abhängt. Typisch sind Medienverarbeitung, Suchindex, Belegerzeugung, E-Mail-Versand und Übertragungen an andere Systeme. Auch ein Massendatenimport läuft über diesen Weg, damit er den laufenden Betrieb nicht ausbremst.

Beispiel aus der Praxis

Nach einer Bestellung sollen ein Beleg erzeugt, eine Bestätigungsmail verschickt und der Auftrag an die Warenwirtschaft übertragen werden. Geschieht das innerhalb der Anfrage, sieht der Kunde eine Ladeanzeige, und bei einer Störung der Warenwirtschaft bricht der Abschluss ab. Über eine Warteschlange erhält er die Bestätigung sofort; die drei Aufgaben laufen danach im Hintergrund, und eine gescheiterte Übertragung wird erneut versucht, ohne dass die Bestellung verloren geht.

Wirtschaftlicher Nutzen

Warteschlangen halten die Anwendung unter Last bedienbar und ergänzen das Caching um die Aufgaben, die dauerhaft Zeit brauchen. Ein ausgefallener Empfänger bremst den Verkauf nicht mehr aus, weil die Aufträge liegen bleiben und nach der Wiederherstellung abgearbeitet werden.

Typische Fehler

  • Langlaufende Aufgaben in der Anfrage belassen – die Antwortzeit hängt dann an Systemen wie der Warenwirtschaft, auf die der Betrieb keinen Einfluss hat.
  • Keine Überwachung des Rückstaus eingerichtet – wachsende Warteschlangen fallen erst auf, wenn Kunden auf Belege warten.
  • Fehlgeschlagene Aufträge unbegrenzt wiederholt – ein dauerhaft fehlerhafter Auftrag blockiert die Abarbeitung der übrigen.
  • Aufträge ohne Absicherung gegen Doppelverarbeitung abgelegt – eine Wiederholung erzeugt denselben Beleg ein zweites Mal.
  • Die Reihenfolge als garantiert angenommen – bei mehreren Prozessen wird nebenläufig abgearbeitet.

Worauf achten?

  • Die Länge der Warteschlange und das Alter des ältesten Auftrags überwachen und einen Schwellenwert festlegen.
  • Für wiederholt gescheiterte Aufträge einen gesonderten Bereich vorsehen, in dem sie sichtbar bleiben und geprüft werden.
  • Aufträge idempotent auslegen, damit eine Wiederholung keinen zweiten Vorgang erzeugt.
  • Die Zahl der Prozesse an der tatsächlichen Last ausrichten und bei Lastspitzen anpassen.
  • Aufgaben, deren Reihenfolge zählt, ausdrücklich verketten, anstatt sich auf die Abarbeitung zu verlassen.

Häufig gestellte Fragen

Welche Aufgaben gehören in eine Warteschlange?

Alles, was die Antwortzeit spürbar verlängert oder von einem anderen System abhängt: Medienverarbeitung, Suchindex, Belegerzeugung, E-Mail-Versand und Übertragungen an angebundene Systeme.

Was passiert bei einem Rückstau?

Die Aufträge bleiben erhalten und werden später abgearbeitet. Spürbar wird der Rückstau durch Verzögerungen, etwa bei Belegen oder im Suchindex, weshalb Länge und Alter der Warteschlange überwacht gehören.

Bleibt die Reihenfolge der Aufträge erhalten?

Nur bei einem einzelnen Bearbeitungsprozess. Arbeiten mehrere Prozesse gleichzeitig, wird nebenläufig abgearbeitet. Aufgaben, deren Reihenfolge zählt, werden ausdrücklich verkettet.