Можете ли вы использовать WMI для создания очереди сообщений MSMQ (ЧАСТНАЯ очередь)?
Вопрос
Мне нужно создать ЧАСТНУЮ очередь сообщений на удаленном компьютере, и я решил, что не могу сделать это с помощью .NET Framework напрямую.Я могу создать общедоступную очередь сообщений на удаленном компьютере, но не ЧАСТНУЮ.Я могу создать очередь сообщений (публичную или частную) локально.
Мне интересно, знает ли кто-нибудь, как получить доступ к MSMQ через WMI.
Редактировать: Я не вижу ничего, что можно было бы сделать с помощью поставщика MSMQ.Возможно, придется пойти на хитрость и использовать PSExec для входа на удаленный сервер и выполнения некоторого кода.
Решение
Да, создать очередь в .NET просто, однако вы не сможете таким образом создать частную очередь на удаленном компьютере.Я уже некоторое время подумывал о добавлении создания очередей к провайдеру MSMQ WMI...Если вам это нужно для реального продукта/клиента, вы можете связаться со мной, и я рассмотрю возможность придания этой функции приоритета.Всего наилучшего, Йоэль Арнон
Другие советы
Сообщение в блоге о MSMQ и WMI находится здесь: http://msmq.spaces.live.com/blog/cns!393534E869CE55B7!210.entry
Там написано, что здесь есть провайдер: http://www.msmq.biz/Blog/MSMQWmiSetup.msi
Там также говорится, что здесь есть ссылка: http://www.msmq.biz/Blog/MSMQ%20WMI%20Provider%20Objects.doc
Надеюсь это поможет.
WMI не может сделать это «из коробки».В предыдущем ответе есть какой-то непонятный поставщик WMI, но он, похоже, даже не поддерживает создание очередей.
Однако в .NET это очень просто!Я бы не зашел так далеко, как PSExec.MessageQueue.Create
Я также хотел создать удаленные частные очереди, но, поскольку .NET не поддерживает это, мы решили вместо этого просто использовать удаленные общедоступные очереди.Если мы установим разрешения на отправку и получение для очередей по желанию, все будет в порядке.
Одной из идей обходного пути было бы написать собственную службу Windows или веб-службу, которая работает на том же компьютере, где должна находиться очередь.Вы можете вызвать эту службу удаленно через сокет или через http, и ваш локально исполняемый код может создать местный частная очередь.
Если вы используете формат прямого имени для ссылки на очередь, вы может Отправка и получение из удаленной частной очереди.
set qinfo = CreateObject("MSMQ.MSMQQueueInfo")
qinfo.PathName = ".\Private$\TestQueue"
qinfo.Label = ".\Private$\TestQueue"
qinfo.Journal = "1"
qinfo.Create
Скопируйте код в текстовый редактор, сохраните файл как .vb
s и выполнить.