Удалить все частные очереди в MSMQ?

2452
PhantomDrummer

Есть ли способ в MSMQ удалить все частные очереди?

У меня есть тысячи личных очередей на моем компьютере, и я уверен, что большинство, если не все, вызваны плохим поведением приложения, которое каждый раз при запуске создает новую очередь со случайным GUID для своего имени.

Теперь я хочу создать пару других частных очередей для работы с MSMQ. Я обнаружил, что тысячи неиспользуемых существующих очередей не только загромождают представление, когда я открываю частные очереди в инструменте управления компьютером, но я подозреваю, что они являются причиной того, что открытие личных очередей в управлении компьютером занимает много времени на моей машине.

Я могу удалить отдельные очереди, просто выбрав одну и нажав «Удалить», но, похоже, не существует очевидного способа выбора диапазона очередей для удаления вместе.

2

2 ответа на вопрос

0
Carlos

Я не уверен в версии Windows, которую вы используете, но я предполагаю, что у вас установлен MSMQ 3.0. В этом случае вы можете запросить все ваши личные объекты MSMQ, используя VBS и вызывая свойство Private Queues в объекте приложения MSMQ и сохраняя их как вариант.

Затем я перебрал бы ваш вариант и использовал бы свойство Delete объекта MSMQQueueInfo и удалял каждую очередь.

Надеюсь, это поможет.

Хорошо спасибо. Я надеялся, что найдется какой-нибудь способ избежать написания сценария для их удаления, но я думаю, сценарий должен быть .... PhantomDrummer 12 лет назад 0
Ах, не парься. Я уверен, что вы можете что-то сделать за несколько минут. Carlos 12 лет назад 0
0
cahit beyaz

You can also write a small program by using code below.

Note that your project should reference System.Messaging

using System.Messaging; 

. .

.

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

Похожие вопросы