Entkopplung birgt Vorteile

Was ist eine Message Queue?

| Autor / Redakteur: Otto Geißler / Ulrike Ostler

Message Queuing bietet einen temporären Nachrichtenspeicher, wenn das Zielprogramm beziehungsweise die Zielanwendung beschäftigt oder gerade nicht verbunden ist.
Message Queuing bietet einen temporären Nachrichtenspeicher, wenn das Zielprogramm beziehungsweise die Zielanwendung beschäftigt oder gerade nicht verbunden ist. (Bild: © djama - stock.adob.com)

Eine Message Queue (Nachrichtenwarteschlange) besteht aus Speicherlokationen zur temporären Speicherung von Datensätzen (Messages, Nachrichten), die von einer Anwendung zu einer anderen weitergegeben werden. So entsteht eine Entkopplung zwischen verschiedenen Anwendungen, damit ihre Funktionalität in sich geschlossen bleibt.

Message Queues sind im Grunde Datensätze, die in Form einer verketteten Liste verwaltet werden. Eine Warteschlange von Nachrichten kann entstehen, wenn Nachrichten zwischen Anwendungen gesendet werden. Das heißt: Es bildet sich eine Folge von Arbeitsobjekten, die auf eine Verarbeitung warten. Bei einer Nachricht handelt es sich um Daten, die zwischen der Sender- und der Empfängeranwendung als Byte-Array mit einigen Kopfzeilen gesendet werden.

Modell der Message Queue

Im Prinzip ist die Architektur einer Message Queue recht einfach. Es gibt so genannte Client-Anwendungen, die man als Producer bezeichnet, weil sie Nachrichten erstellen und dann an die Message Queue weiterleiten. Die andere Anwendung wird Consumer genannt, da sie die Verbindung zur Message Queue herstellt und die jeweiligen zu verarbeitenden Nachrichten abruft. Das geschieht, indem die Nachrichten in der Message Queue geparkt und gespeichert werden, bis der Consumer sie abruft.

Im Zuge dessen wird von der Message Queue ein asynchrones Kommunikationsprotokoll bereitgestellt. Denn ein System, das eine Nachricht in eine Message Queue stellt, braucht zunächst keine unmittelbare Antwort für die weitere Verarbeitung.

Beim E-Mailverkehr ist der Producer ebenfalls vom Consumer entkoppelt, da beim Senden einer E-Mail der Absender andere Dinge tun kann, ohne auf eine sofortige Antwort des Empfängers zu warten Also: Der Producer und der Consumer der Nachricht müssen nicht gleichzeitig mit der Message Queue interagieren.

Entkopplung und Skalierbarkeit

Der Producer wird vom Consumer getrennt, damit ihre Funktionalität in sich geschlossen bleibt. Auf diese Weise können zwei oder mehrere Systeme miteinander kommunizieren, ohne letztlich direkt verbunden zu sein. Entkopplung ist oft ein Hinweis auf ein gut strukturiertes IT-System. Denn es ist in der Regel einfacher zu warten, zu skalieren und zu debuggen.

Statt eine singuläre große Anwendung zu erstellen, ist es häufig besser, verschiedene Teile der Anwendung zu entkoppeln und asynchron mit Nachrichten zwischen den einzelnen kleineren Anwendungen zu kommunizieren. Die Vorteile: Es können verschiedene Teile der Anwendung nicht nur unabhängig voneinander entwickelt, sondern auch in unterschiedlichen Sprachen geschrieben beziehungsweise von getrennten Entwicklern verwaltet werden.

Funktion von Message Queue

Wenn eine neue Nachricht in einer Queue abgelegt wird, in der schon Nachrichten vorhanden sind, wird die neue Nachricht den bereits vorliegenden Nachrichten in der Queue hinzugefügt. Wird eine Nachricht aus der Queue entfernt, so verbleiben keine Daten dieser Nachricht in der Warteschlange gespeichert. Diesen Vorgang nennt man auch „zerstörungsfreies Schreiben beziehungsweise zerstörendes Lesen“.

Ein vereinfachtes Modell einer Queue kann mit dem Abfüllvorgang eines Trichters verdeutlicht werden. Die obere breite Öffnung des Trichters kann viel Flüssigkeit (Nachrichten) aufnehmen und im unteren engen Teil wird die Menge deutlich begrenzt. Das heißt, die Nachrichten werden in der Anwendung sukzessive empfangen und verarbeitet.

Die Rate, mit der die Flüssigkeit (Nachrichten) in den Trichter gefüllt beziehungsweise der Message Queue hinzugefügt wird, nennt sich Production Rate (Eingangsrate). Die Rate, mit der die Flüssigkeit unten aus dem Trichter austritt (Entfernung der Nachrichten aus der Message Queue) wird Consumption Rate (Ausgangsrate) bezeichnet.

Eine Message Queue ist also nur sinnvoll, wenn die Production Rate für eine bestimmte Zeit größer ist als die Consumption Rate. Diese kurze Zeit nennt man „Burst“ (Stoßzeit). Eine Queue kann also nur während eines gelegentlichen Bursts einen zeitweiligen Überschuss an Production gegenüber Consumption aufnehmen. Diese „Bursts“ sollten über die Zeit verteilt sein.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 46096832 / Definitionen)