Удалить все частные очереди в MSMQ?
Есть ли способ в MSMQ удалить все частные очереди?
У меня есть тысячи личных очередей на моем компьютере, и я уверен, что большинство, если не все, вызваны плохим поведением приложения, которое каждый раз при запуске создает новую очередь со случайным GUID для своего имени.
Теперь я хочу создать пару других частных очередей для работы с MSMQ. Я обнаружил, что тысячи неиспользуемых существующих очередей не только загромождают представление, когда я открываю частные очереди в инструменте управления компьютером, но я подозреваю, что они являются причиной того, что открытие личных очередей в управлении компьютером занимает много времени на моей машине.
Я могу удалить отдельные очереди, просто выбрав одну и нажав "Удалить", но не существует очевидного способа выбора диапазона очередей для удаления вместе.
2 ответа
Я не уверен в версии Windows, которую вы используете, но я предполагаю, что у вас установлен MSMQ 3.0. В этом случае вы можете запросить все ваши личные объекты MSMQ, используя VBS и вызывая свойство Private Queues в объекте приложения MSMQ и сохраняя их как вариант.
Затем я бы перебрал ваш вариант и использовал свойство Delete объекта MSMQQueueInfo и удалял каждую очередь.
Надеюсь, это поможет.
Вы также можете написать небольшую программу, используя код ниже.
Обратите внимание, что ваш проект должен ссылаться на System.Messaging
using System.Messaging;
,,
,
MessageQueue[] msmques = MessageQueue.GetPrivateQueuesByMachine(".");
foreach (var item in msmques)
{
MessageQueue.Delete(".\\"+item.QueueName);
}