Erkennen und Löschen von verwaisten Warteschlangen, Themen oder Abonnements in Azure Service Bus

Wenn keine Verlage oder Abonnenten mehr eine Warteschlange, ein Thema oder ein Abonnement lesen oder in diese schreiben, ist diese Warteschlange / dieses Thema / dieses Abonnement aufgrund von Abstürzen oder anderen abnormalen Beendigungen (Neustart der Instanz usw.) effektiv verwaist?

Ich habe dies getestet, indem ich ein paar Warteschlangen erstellt und dann die Anwendungen beendet habe. Diese Warteschlangen befanden sich noch lange später im Servicebus. Es scheint, dass sie einfach für immer dort bleiben werden. Das wäre wunderbar, wenn wir dieses Verhalten WOLLEN, aber in diesem Fall tun wir es nicht.

Wie können wir diese Warteschlangen, Themen und Abonnements erkennen und löschen? Sie werden auf Azure-Grenzwerte usw. angerechnet, und wir können diese verwaisten Prozesse nicht jedes Mal ausführen, wenn eine Instanz neu gestartet / gepatcht / abgestürzt wird.

Wenn dies die Frage klarer macht, ist dies eine einzigartige Situation, in der die Warteschlangen / Themen / Abonnements spezielle Namen oder spezielle Filter und eine sehr begrenzte Anzahl von Herausgebern (1) und Abonnenten (1) für eine begrenzte Zeit haben. Dies ist kein Fall, in dem wir Überlebensfähigkeit wollen. Dies sind instanzspezifische Antwortkanäle. Ob wir Warteschlangen oder Abonnements verwenden, ist unerheblich. Wenn die Instanz nicht mehr vorhanden ist, ist auch die Warteschlange (oder das Abonnement) erforderlich.

Dies ist Teil einer Lösung, bei der jede Webrolle einen eigenen Antwortkanal hat, den sie überwacht. In dieser Webrolle können jederzeit Dutzende von Anfragen über andere Nachrichtenkanäle (Warteschlangen / Themen) anstehen, und sie wartet auf die Antworten in mehreren Threads. Wir benötigen die Antwort, um zu dem Thread zurückzukehren, der die Nachricht platziert hat, damit die Webrolle dem Anrufer antworten kann. In dieser Situation ist es nicht gut, einfach ein Abonnement zu haben, das auf dem Computer basiert, da Nachrichten für andere Threads empfangen werden. Wir benötigen jeden Veröffentlichungsthread, um einen dedizierten Antwortkanal einzurichten, sodass das Einzige auf diesem Kanal die Antwort für diesen Thread ist.

Selbst wenn wir Subscriptions (mit einem instanzbezogenen Filter) verwenden, um einen Empfangsvorgang mit langen Abfragen für das Abonnement durchzuführen, wird dieses Abonnement verwaist, wenn die Webrolleninstanz stirbt.

Diese Frage lässt sich folgendermaßen zusammenfassen: Wenn eine Warteschlange / ein Thema / ein Abonnement nicht mehr von Publishern oder Abonnenten abonniert werden kann, ist dieser Dienst praktisch verwaist. Wie können diese Waisen entdeckt und aufgeräumt werden?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage