Tun Nachrichten in der dead letter-Warteschlange in der Azure-Service-Bus ablaufen?
Tun Nachrichten in der dead letter-Warteschlange in der Azure Service Bus ab?
Eine Erklärung
Ich habe diesen queue-Einstellungen:
var queueDescription = new QueueDescription("MyTestQueue")
{
RequiresSession = false,
DefaultMessageTimeToLive = TimeSpan.FromMinutes(1),
EnableDeadLetteringOnMessageExpiration = true,
MaxDeliveryCount = 10
};
namespaceManager.CreateQueue(queueDescription);
Wenn ich einige Nachrichten in Azure Service Bus message queue (nicht Warteschlangen von Azure-Speicher) und nicht verbrauchen Sie (jemals), Sie werden bewegt werden, um die dead letter-Warteschlange automatisch.
Aber, wenn ich keine Verbraucher für die dead letter-Warteschlange entweder, werden die Nachrichten immer gelöscht werden aus der dead letter-Warteschlange oder werden Sie für immer dort bleiben? (Gibt es eine offizielle Dokumentation, die besagt, wie das funktionieren soll?)
Meine Prüfungen
In meine Studien, ich legte 3 Nachrichten in der Warteschlange. Sie waren tot, beschriftet nach 2 Minuten oder so. Sie blieb in der dead letter queue für mindestens einen Tag und wurden nicht entfernt.
Zwar ruft NamespaceManager.GetQueueAsync() gab mir die Werte oben (beachten Sie, wie MessageCount
noch 3
aber DeadLetterMessageCount
ist seltsam 0
), könnte ich noch den Empfang von Nachrichten aus der dead letter queue. (So dass Sie nicht aus der Warteschlange entfernt.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sebastian Ihre Beobachtung ist richtig, dass Nachrichten, die nach dem platzieren in der DeadLetter sub-queue nie verfallen. Sie werden für immer dort bleiben, bis Sie gelöscht werden ausdrücklich von der DeadLetter sub-queue. In der oben genannten Fehler in Bezug auf die Werkzeuge/api könnte es ein refresh Problem? Der Aufruf GetQueueAsync() gemacht werden muß nach den Nachrichten gewesen sein Toten-Buchstaben, die nicht eine deterministische Zeit, sagen, wenn Sie hatte eine Schlange mit tausend Nachrichten, die waren abgelaufen, aber die Warteschlange wurde nicht benutzt wird (send/receive-Operationen), dann die Anzahl kann noch zurück, als Aktiv, bis einige Operationen durchgeführt werden.
Nachdem ich einige der Forschung ich stolperte über eine Tatsache, die ich komplett verpasst:
Nachrichten ablaufen können, auch wenn dead Schriftzug ist deaktiviert.
Wenn Nachrichten laufen ab, während dead Schriftzug deaktiviert ist (Standardeinstellung), werden Sie einfach gelöscht.
So, Microsofts Argumentation für die nicht-automatische-löschen von Nachrichten aus der dead letter queue ist wohl:
Wenn Sie aktivieren tot Schriftzug, Sie explizit wollen abgelaufene Nachricht nicht weggeworfen, sondern an einem anderen Ort gespeichert (dead letter-Warteschlange), so dass Sie Sie ansehen können.