以编程方式在MSMQ中添加专用队列

时间:2011-04-05 22:03:40

标签: c# command-line msmq

我有超过20个队列的列表,需要在MSMQ中添加为私有队列。

有没有办法使用

来做到这一点
  1. 命令行

  2. C#编程

  3. 如果有办法使用某种脚本或.net编程,那么我可以添加它而不用手动输入它并导致拼写错误。

    请告诉我。

    感谢

3 个答案:

答案 0 :(得分:19)

using System.Messaging;

//...

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

您只能在本地计算机上创建专用队列。有关详细信息,请参阅:Creating Queues

答案 1 :(得分: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..."

答案 2 :(得分:0)

有点晚了,但我现在才开始研究它们。

要添加到Richard的答案,您可以创建公共队列。 你需要主机名和管理员访问该机器。

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