Удалить все частные очереди в 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);
}
Другие вопросы по тегам