Was ist eine Warteschlange für unzustellbare Nachrichten (DLQ)?


Was ist eine Warteschlange für unzustellbare Nachrichten?

Eine Warteschlange für unzustellbare Nachrichten (DLQ) ist eine spezielle Art von Nachrichtenwarteschlange, in der Nachrichten vorübergehend gespeichert werden, die ein Softwaresystem aufgrund von Fehlern nicht verarbeiten kann. Nachrichtenwarteschlangen sind Softwarekomponenten, die die asynchrone Kommunikation in einem verteilten System unterstützen. Sie ermöglichen das Senden von Nachrichten zwischen Softwareservices in beliebigem Umfang und erfordern nicht, dass der Nachrichtenempfänger immer verfügbar ist. In einer Warteschlange für unzustellbare Nachrichten werden speziell fehlerhafte Nachrichten gespeichert, die kein Ziel haben oder die vom vorgesehenen Empfänger nicht verarbeitet werden können.

Warum sind Warteschlangen für unzustellbare Nachrichten wichtig?

Warteschlangen für unzustellbare Nachrichten (DLQ) existieren neben regulären Nachrichtenwarteschlangen. Sie dienen als temporärer Speicher für fehlerhafte und fehlgeschlagene Nachrichten. DLQs verhindern, dass die Quellwarteschlange mit unverarbeiteten Nachrichten überfüllt wird.

Stellen Sie sich zum Beispiel eine Software vor, die über eine reguläre Nachrichtenwarteschlange und eine DLQ verfügt. Die Software verwendet die reguläre Warteschlange, um Nachrichten zu speichern, die sie an ein Ziel senden möchte. Wenn der Empfänger die gesendeten Nachrichten nicht beantwortet oder verarbeitet, verschiebt die Software sie in die Warteschlange für unzustellbare Nachrichten.

Es gibt zwei mögliche Ursachen, wenn Nachrichten in die DLQ-Pipeline verschoben werden: fehlerhafter Nachrichteninhalt und Änderungen im System des Empfängers.

Fehlerhafter Nachrichteninhalt

Eine Nachricht wird in eine DLQ verschoben, wenn die übertragene Nachricht fehlerhaft ist. Hardware-, Software- und Netzwerkbedingungen können die gesendeten Daten beschädigen. Beispielsweise ändern Hardwareinterferenzen einige der Informationen während der Übertragung geringfügig. Die unerwartete Datenbeschädigung könnte dazu führen, dass der Empfänger die Nachricht ablehnt oder ignoriert.

Änderungen im System des Empfängers

Eine Nachricht kann auch in eine DLQ verschoben werden, wenn die empfangende Software Änderungen vorgenommen hat, von denen der Absender nichts weiß. Sie könnten beispielsweise versuchen, die Informationen eines Kunden zu aktualisieren, indem Sie eine Nachricht für CUST_ID_005 senden. Der Empfänger kann die eingehende Nachricht jedoch möglicherweise nicht verarbeiten, da der Kunde dadurch aus der Datenbank des Systems entfernt wurde.

Was sind die Vorteile einer Warteschlange für unzustellbare Nachrichten?

Als Nächstes sprechen wir über die Vorteile von Warteschlangen für unzustellbare Nachrichten (DLQ).

Geringere Kommunikationskosten

Reguläre oder standardmäßige Nachrichtenwarteschlangen verarbeiten weiterhin Nachrichten, bis die Aufbewahrungsfrist abgelaufen ist. Dadurch wird eine kontinuierliche Nachrichtenverarbeitung gewährleistet und die Wahrscheinlichkeit, dass Ihre Warteschlange blockiert wird, minimiert.

Wenn Ihr System jedoch Tausende von Nachrichten verarbeitet, erhöht eine große Anzahl von Fehlermeldungen die Kommunikationskosten und belastet das Kommunikationssystem. Anstatt zu versuchen, fehlgeschlagene Nachrichten zu verarbeiten, bis sie ablaufen, ist es besser, sie nach einigen Verarbeitungsversuchen in eine Warteschlange für unzustellbare Nachrichten zu verschieben. 

Verbesserte Problembehandlung

Wenn Sie fehlerhafte Meldungen in den DLQ verschieben, können sich Ihre Entwickler auf die Identifizierung der Fehlerursachen konzentrieren. Sie können untersuchen, warum der Empfänger die Nachrichten nicht verarbeiten konnte, die Korrekturen anwenden und neue Versuche unternehmen, die Nachrichten zuzustellen.

Beispielsweise kann eine Banking-Software täglich Tausende von Kreditkartenanträgen zur Genehmigung an ihr Backend-System senden. Von dort erhält das Backend-System die Anträge, kann sie jedoch aufgrund unvollständiger Informationen nicht alle bearbeiten. Anstatt endlose Versuche zu unternehmen, verschiebt die Software die Nachrichten an die DLQ, bis das IT-Team das Problem löst. Dadurch kann das System die verbleibenden Nachrichten ohne Leistungsprobleme verarbeiten und zustellen. 

Wann sollten Sie eine Warteschlange für unzustellbare Nachrichten verwenden?

Sie können eine Warteschlange für unzustellbare Nachrichten (DLQ) verwenden, wenn Ihr System die folgenden Probleme hat. 

Ungeordnete Warteschlangen

Sie können DLQs nutzen, wenn Ihre Anwendungen nicht von der Bestellung abhängen. DLQs helfen Ihnen zwar bei der Behebung falscher Nachrichtenübermittlungsvorgänge, Sie sollten jedoch Ihre Warteschlangen weiterhin überwachen und fehlgeschlagene Nachrichten erneut senden. 

FIFO-Warteschlangen

Die Reihenfolge der Nachrichten ist in First-In-First-Out-Warteschlangen (FIFO) wichtig. Jede Nachricht muss verarbeitet werden, bevor die nächste Nachricht zugestellt wird. Sie können Warteschlangen für unzustellbare Nachrichten mit FIFO-Warteschlangen verwenden, aber Ihre DLQ-Implementierung sollte ebenfalls FIFO sein.

Wann sollten Sie keine Warteschlange für unzustellbare Nachrichten verwenden?

Sie sollten keine Warteschlange für unzustellbare Nachrichten (DLQ) mit ungeordneten Warteschlangen verwenden, wenn Sie die Übertragung einer Nachricht auf unbestimmte Zeit wiederholen möchten. Verwenden Sie beispielsweise keine Warteschlange für unzustellbare Nachrichten, wenn Ihr Programm warten muss, bis ein abhängiger Prozess aktiv oder verfügbar wird. 

Ebenso sollten Sie keine Warteschlange für unzustellbare Nachrichten mit einer First-In-First-Out-Warteschlange (FIFO) verwenden, wenn Sie die genaue Reihenfolge der Nachrichten oder Operationen nicht überschreiten möchten. Verwenden Sie beispielsweise keine Warteschlange mit unzustellbaren Nachrichten und Anweisungen in einer Bearbeitungsliste (EDL) für eine Videobearbeitungs-Suite. In diesem Fall ändern Sie durch die Änderung der Reihenfolge der Bearbeitungen den Kontext der nachfolgenden Bearbeitungen.

Wie funktioniert eine Warteschlange für unzustellbare Nachrichten?

In den meisten Fällen funktioniert eine Warteschlange für unzustellbare Nachrichten (DLQ) wie eine normale Nachrichtenwarteschlange. Sie speichert fehlerhafte Meldungen, bis Sie sie verarbeiten, um den Grund für den Fehler zu untersuchen.

Als Nächstes besprechen wir die Redrive-Richtlinie für DLQs und die Art und Weise, wie Nachrichten in DLQs ein- und ausgehen.

Erstellung einer Redrive-Richtlinie

Die Software verschiebt Nachrichten unter Bezugnahme auf die Redrive-Richtlinie in eine Warteschlange für unzustellbare Nachrichten. Die Redrive-Richtlinie besteht aus Regeln, die festlegen, wann die Software Nachrichten in die Warteschlange für unzustellbare Nachrichten verschieben soll. Die Redrive-Richtlinie definiert hauptsächlich die maximale Anzahl von Wiederholungsversuchen und reguliert, wie die Quellwarteschlange und die Warteschlange für unzustellbare Nachrichten miteinander interagieren. 

Wenn Ihr Entwickler beispielsweise die maximale Anzahl von Wiederholungsversuchen auf eins festlegt, verschiebt das System alle erfolglosen Lieferungen nach einem einzigen Versuch an die DLQ. Einige fehlgeschlagene Lieferungen können durch vorübergehende Netzwerküberlastung oder Softwareprobleme verursacht werden. Dadurch werden viele nicht zugestellte Nachrichten an den DLQ gesendet. Um das richtige Gleichgewicht zu finden, optimieren Entwickler die maximale Anzahl von Wiederholungen, um sicherzustellen, dass die Software genügend Wiederholungen durchführt, bevor Nachrichten in den DLQ verschoben werden.

Nachrichten in die Warteschlange für unzustellbare Nachrichten verschieben

Zustellversuche zwischen Absender und Empfänger können aus verschiedenen Gründen fehlschlagen: 

  • Der Empfänger kann die Nachricht nicht empfangen, da sie nicht existiert. 
  • Die Nachricht enthält Fehler. 
  • Die Nachricht überschreitet die Warteschlangen- oder Nachrichtenlängenbeschränkungen. Beispielsweise können einige Empfänger keine Nachrichten verarbeiten, die eine bestimmte Größe überschreiten. 
  • Die Time to Live (TTL) der Nachricht ist abgelaufen. TTL ist ein Wert, der angibt, wie lange ein bestimmtes Datenpaket im Netzwerk gültig ist. 

Nachrichten aus der Warteschlange für unzustellbare Nachrichten verschieben

Wenn Nachrichten in die Warteschlange für unzustellbare Nachrichten verschoben werden, überprüfen Entwickler die fehlerhaften Nachrichten, um die Ursachen zu ermitteln. Die Nachrichten in der DLQ können wertvolle Erkenntnisse enthalten, um zu verhindern, dass ähnliche Probleme in Zukunft erneut auftreten. Nachdem die Entwickler die Probleme analysiert und behoben haben, verschiebt das System die Nachrichten aus der DLQ in die Quellwarteschlange. Dadurch kann der Absender die Nachrichten weiter verarbeiten. 

Wie kann AWS Ihre Anforderungen an Warteschlangen für unzustellbare Nachrichten erfüllen?

Amazon Simple Queue Service (Amazon SQS) bietet einen skalierbaren Ansatz für den skalierbaren Nachrichtenaustausch zwischen verteilten Systemen. Entwickler verwenden Amazon SQS, um zuverlässige Webanwendungen mit vollständig verwalteten Standardwarteschlangen und First-In-First-Out-Warteschlangen (FIFO) zu erstellen.

Hier sind weitere Vorteile von Amazon SQS:

  • Amazon SQS ermöglicht es Systemen, eine unbegrenzte Anzahl von Nachrichtenwarteschlangen zu erstellen
  • Entwickler können Nachrichten stapelweise übertragen, um Kosteneffizienz zu erreichen
  • Amazon SQS unterstützt das Sperren von Nachrichten und verhindert so, dass mehrere Computer dieselbe Nachricht gleichzeitig verarbeiten

Beginnen Sie noch heute mit den ersten Schritten mit Amazon Web Services (AWS), indem Sie ein AWS-Konto erstellen.

Nächste Schritte in AWS

Zusätzliche produktbezogene Ressourcen ansehen
Kostenlose Anwendungsintegrationsangebote entdecken 
Für ein kostenloses Konto registrieren

Sie erhalten sofort Zugriff auf das kostenlose Kontingent von AWS.

Registrieren 
Mit der Entwicklung in der Konsole starten

Starten Sie mit der Entwicklung in der AWS-Managementkonsole.

Anmelden