Verlaufen Nachrichten in Dead-Letter-Warteschlangen in Azure Service Bus?

8

Verfallen Nachrichten in Dead-Letter-Warteschlangen in Azure Service Bus?

Einige Erklärung

Ich habe diese Warteschlangeneinstellungen:

%Vor%

Wenn ich einige Nachrichten in einer Azure Service Bus-Nachrichtenwarteschlange ablege (keine Warteschlangen von Azure Storage) und sie nicht (jemals) konsumiere, werden sie automatisch in die Warteschlange für nicht zustellbare Nachrichten verschoben.

Wenn ich jedoch keinen Verbraucher für die Warteschlange für unzustellbare Nachrichten habe, werden die Nachrichten jemals aus der Warteschlange für unzustellbare Nachrichten gelöscht oder bleiben sie für immer dort? (Gibt es eine offizielle Dokumentation darüber, wie das funktionieren soll?)

Meine Versuche

In meinen Versuchen habe ich 3 Nachrichten in die Warteschlange gestellt. Sie waren nach 2 Minuten tot beschriftet. Sie blieben für mindestens einen Tag in der Warteschlange für unzustellbare Nachrichten und wurden nicht entfernt.

Obwohl NamespaceManager.GetQueueAsync () aufgerufen wird gab mir die oben genannten Werte (beachte, wie MessageCount immer noch 3 ist, aber DeadLetterMessageCount ist seltsamerweise 0 ), ich könnte trotzdem die Nachrichten aus der Dead-Letter-Warteschlange erhalten. (Sie wurden also nicht aus der Warteschlange entfernt.)

    
Sebastian Krysmanski 13.05.2014, 09:06
quelle

2 Antworten

8

Sebastian, Ihre Beobachtung ist richtig, da Nachrichten, die einmal in die DeadLetter-Unterwarteschlange gestellt wurden, niemals ablaufen. Sie werden dort für immer verfügbar sein, bis sie explizit aus der DeadLetter-Unterwarteschlange entfernt werden. In dem obigen Fehler bezüglich der Tooling / API könnte es ein Problem mit dem Aktualisieren sein? Der Aufruf von GetQueueAsync () muss nach dem Dead-Lettern der Nachrichten erfolgen, was keine deterministische Zeit ist, z. B. wenn Sie eine Warteschlange mit tausend Nachrichten hatten, die abgelaufen waren, aber nicht verwendet wurden (Sende- / Empfangsoperationen) ) dann kann die Zählung immer noch als Aktiv zurückkehren, bis einige Operationen ausgeführt werden.

    
Abhishek Lal 14.05.2014, 17:00
quelle
3

Nach einigen Nachforschungen bin ich über eine Tatsache gestolpert, die ich völlig vermisst habe:

Nachrichten können auch dann ablaufen, wenn die deaktivierte Beschriftung deaktiviert ist.

Wenn Nachrichten ablaufen, während die tote Beschriftung deaktiviert ist (was die Standardeinstellung ist), werden sie einfach gelöscht.

Microsoft hat daher folgende Gründe für das automatische Löschen von Nachrichten aus der Warteschlange für nicht zustellbare Nachrichten:

Wenn Sie tote Buchstaben aktivieren, wird Ihre explizit abgelaufene Nachricht nicht verworfen, sondern an einer anderen Stelle (der Warteschlange für unzustellbare Nachrichten) gespeichert, damit Sie sie überprüfen können.

    
Sebastian Krysmanski 15.05.2014 08:31
quelle