Программно добавлять частные очереди в MSMQ

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

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

  • Командная строка

  • Программирование на С#

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

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

спасибо

Ответ 1

using System.Messaging;

//...

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

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

Ответ 2

В командной строке вы можете создать файл .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..."

Ответ 3

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

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

  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);
    }
}