Alle privaten Warteschlangen in MSMQ löschen?

2479
PhantomDrummer

Gibt es eine Möglichkeit in MSMQ, alle privaten Warteschlangen zu löschen?

Ich habe Tausende von privaten Warteschlangen auf meinem Computer. Ich bin mir ziemlich sicher, dass die meisten, wenn nicht alle, von einer schlecht benannten App verursacht werden, die bei jedem Start eine neue Warteschlange mit einer zufälligen GUID für ihren Namen erstellt.

Jetzt möchte ich ein paar andere private Warteschlangen erstellen, um mit MSMQ arbeiten zu können. Ich stelle fest, dass die Tausende ungenutzter vorhandener Warteschlangen nicht nur die Ansicht stören, wenn ich private Warteschlangen im Computerverwaltungsprogramm öffne, sondern auch vermute Sie sind der Grund, warum das Öffnen von privaten Warteschlangen in der Computerverwaltung auf meinem Computer sehr lange dauert.

Ich kann einzelne Warteschlangen löschen, indem Sie einfach eine auswählen und auf "Löschen" klicken. Es scheint jedoch nicht naheliegend, einen Bereich von Warteschlangen auszuwählen, die zusammen gelöscht werden sollen.

2

2 Antworten auf die Frage

0
Carlos

Ich bin mir nicht sicher, welche Version von Windows Sie verwenden, aber ich gehe davon aus, dass Sie MSMQ 3.0 installiert haben. In diesem Fall können Sie alle Ihre privaten MSMQ-Objekte mit VBS abfragen und die Private Queues-Eigenschaft im MSMQ-Anwendungsobjekt aufrufen und als Variante speichern.

Dann würde ich durch Ihre Variante blättern, die Delete-Eigenschaft von MSMQQueueInfo verwenden und jede Warteschlange löschen.

Hoffentlich hilft das.

OK danke. Ich hatte gehofft, es würde eine Möglichkeit geben, ein Skript zu schreiben, um sie zu löschen, aber ich denke, das Skript muss es sein ... PhantomDrummer vor 12 Jahren 0
Ach, schwitz es nicht. Ich bin sicher, Sie können in wenigen Minuten etwas aufpeppen. Carlos vor 12 Jahren 0
0
cahit beyaz

Sie können auch ein kleines Programm schreiben, indem Sie den folgenden Code verwenden.

Beachten Sie, dass Ihr Projekt auf System.Messaging verweisen sollte

using System.Messaging; 

. .

.

MessageQueue[] msmques = MessageQueue.GetPrivateQueuesByMachine("."); foreach (var item in msmques) { MessageQueue.Delete(".\\"+item.QueueName); }