Можно ли использовать WMI для создания очереди сообщений MSMQ (ЧАСТНАЯ очередь)?

Мне нужно создать ЧАСТНУЮ очередь сообщений на удаленной машине, и я решил, что не могу сделать это с помощью .NET Framework напрямую. Я могу создать общедоступную очередь сообщений на удаленной машине, но не ЧАСТНУЮ. Я могу создать очередь сообщений (общедоступную или частную) локально.

Мне интересно, знает ли кто-нибудь, как получить доступ к MSMQ через WMI.

Редактировать: я не вижу ничего подобного в использовании поставщика MSMQ. Возможно, придется пойти на хитрость и использовать PSExec для входа на удаленный сервер и выполнения некоторого кода.


person ferventcoder    schedule 19.09.2008    source источник


Ответы (5)


Да, создание очереди в .NET простое, однако вы не можете таким образом создать частную очередь на удаленной машине. Некоторое время я думал о добавлении создания очереди в провайдер MSMQ WMI... Если вам это нужно для реального продукта/клиента, вы можете связаться со мной, и я рассмотрю возможность придания этой функции приоритета. Всего наилучшего, Йоэль Арнон.

person Community    schedule 31.10.2008
comment
Хмммм... мы хотели бы иметь возможность там, где я работаю. Это очень помогло бы нашему автоматизированному процессу развертывания. - person ferventcoder; 24.11.2008


WMI не может сделать это из коробки. В предыдущем ответе есть какой-то непонятный поставщик WMI, но, похоже, он даже не поддерживает создание очереди.

Однако в .NET это очень просто! Я бы не стал заходить так далеко, как PSExec. MessageQueue.Create

person TheSoftwareJedi    schedule 01.10.2008
comment
Извини чувак. Вся документация и последующие интеграционные тесты доказывают, что вы не можете использовать это для удаленного создания очереди сообщений PRIVATE. - person ferventcoder; 03.10.2008

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

Одна из идей обходного пути состоит в том, чтобы написать собственную службу Windows или веб-службу, которая работает на том же компьютере, где должна находиться очередь. Вы можете вызвать эту службу удаленно через сокет или через http, а ваш локально работающий код может создать локальную частную очередь.

Если вы используете формат прямого имени для ссылки на очередь, вы можете отправлять и получать сообщения из удаленной частной очереди.

person Community    schedule 08.01.2010

set qinfo = CreateObject("MSMQ.MSMQQueueInfo")
qinfo.PathName = ".\Private$\TestQueue"
qinfo.Label = ".\Private$\TestQueue"
qinfo.Journal = "1"
qinfo.Create

Скопируйте код в текстовом редакторе, сохраните файл как .vbs и выполните.

person Community    schedule 13.11.2008
comment
Удаленное, пожалуйста... не локальное создание - person ferventcoder; 24.11.2008