программно добавлять частные очереди в MSMQ - PullRequest
11 голосов
/ 06 апреля 2011

У меня есть список из более чем 20 очередей, которые необходимо добавить в качестве личной очереди в MSMQ.

Есть ли способ сделать это, используя

  1. Командная строка

  2. C # программирование

Если есть способ сделать что-то вроде сценария или программирования .net, то я мог бы добавить его, не вводя его вручную и вызывая опечатки.

Пожалуйста, дайте мне знать.

спасибо

Ответы [ 3 ]

19 голосов
/ 06 апреля 2011
using System.Messaging;

//...

void CreateQueue(string qname) {
   if (!MessageQueue.Exists(qname)) MessageQueue.Create(qname);
}

Вы можете создавать только личные очереди на локальном компьютере.Для получения дополнительной информации см .: Создание очередей

2 голосов
/ 17 января 2012

Для командной строки вы можете создать файл .vbs со следующим содержимым:

Option Explicit

Dim objInfo
Dim objQue
Dim objMsg
Dim strFormatName   ' Destination

strFormatName = "direct=os:.\private$\test"

Set objInfo = CreateObject("MSMQ.MSMQQueueInfo")
Set objMsg = CreateObject("MSMQ.MSMQMessage")

objMsg.Label = "my message"
objMsg.Body = "This is a sample message."
objInfo.FormatName = strFormatName
set objQue = objInfo.Open( 2, 0 )

' Send Message
objMsg.Send  objQue

' Close Destination
objQue.Close

Set objMsg = Nothing
Set objInfo = Nothing

msgbox "Done..."
0 голосов
/ 20 ноября 2015

Немного опоздал, но сейчас я начал над ними работать.

Чтобы добавить ответ Ричарда, вы можете создавать публичные очереди. вам нужно имя хоста и доступ администратора к этой машине.

  public static MessageQueue CreatePrivate(string name) {
        string path = string.Format(@".\private$\{0}", name);
        if (!MessageQueue.Exists(path)) {
            MessageQueue.Create(path);
            return new MessageQueue(path);
        }
        return new MessageQueue(path);
    }

    public static MessageQueue CreatePublic(string hostname,string queuename) {
        string path = string.Format(@"{0}\{1}", hostname,queuename);
        if (!MessageQueue.Exists(path)) {
            MessageQueue.Create(path);
            return new MessageQueue(path);
        }
        return new MessageQueue(path);
    }
}
...