© DrHitch/Shutterstock.com
Apps mit Azure

5 Was ist eine Queue, und wozu braucht man sie?


Als Queue (Warteschlange) bezeichnet man in der Softwareentwicklung einen Zwischenspeicher, der Nachrichten aufnehmen kann und diese zur weiteren Verwendung zur Verfügung stellt. Eine solche Warteschlange kann prinzipiell eine beliebige Menge von Nachrichten aufnehmen, die in der Reihenfolge ihres Einfügens wieder abgegeben werden. Die Größe einer Queue ist allerdings in der Regel durch das Betriebssystem limitiert.

Eine Queue kann stark vereinfacht mit einer Personenschlange an einer Supermarktkasse verglichen werden: Die zuletzt hinzugefügte Nachricht (die zuletzt hinzugekommene Person in der Schlange) wird als Letztes bedient („First in – First out“). Also doch nerviges Warten? Nein. Der Versender einer Nachricht legt diese lediglich in der Queue ab – somit ist er fertig und kann sich wieder anderen Aufgaben widmen. Durch diese Zwischenspeicherung wird eine garantierte Zustellung der Informationen durch den Versender gewährleistet, ganz egal, ob der Zielserver augenblicklich erreichbar ist oder nicht. Sollte die Nachricht dennoch nicht in der Queue abgelegt werden können, wird der Sender der Nachricht über deren fehlgeschlagene Zustellung informiert und kann entsprechend reagieren.

Die in der Queue abgelegten Nachrichten können zu irgendeinem Zeitpunkt vom Empfänger abgeholt werden, um weiter verarbeitet zu werden. Auf diese Weise wird ein Warten des Senders auf Aktionen des Empfängers vermieden. Es erfolgt eine Entkopplung zwischen Sender und Empfänger, was zu einer erheblichen Verkürzung der Antwortzeiten führen kann. An dieser Stelle sollte allerdings erwähnt sein, dass in einer Queue keine Daten abgelegt werden, sondern lediglich Nachrichten, etwa ein Verweis auf Daten (bspw. ein GUID), die in einem Table Storage abgelegt sein könnten, oder aber einfache Textnachrichten.

Ganz wichtig bei einer Queue ist es, dass die Nachrichten nach erfolgreicher Bearbeitung gelöscht werden müssen. Wird eine Nachricht abgerufen und innerhalb einer Zeitspanne nicht gelöscht, so ist sie zwar für einen gewissen Zeitraum für andere Prozesse unsichtbar, wird jedoch für zugreifende Prozesse zu einem späteren Zeitpunkt wieder sichtbar. Dadurch kann es zu mehrfachen Verarbeitungsvorgängen kommen, was im Normalfall nicht erwünscht ist.

In der modernen Softwareentwicklung werden Queues häufig zur „Datenübergabe“ zwischen asynchronen Prozessen in verteilten Systemen verwendet. Anders als bei einer klassischen Client-Server-Architektur wird eine Transaktion hier nicht direkt ...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang