我有超过20个队列的列表,需要在MSMQ中添加为私有队列。
有没有办法使用
来做到这一点命令行
C#编程
如果有办法使用某种脚本或.net编程,那么我可以添加它而不用手动输入它并导致拼写错误。
请告诉我。
感谢
答案 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);
}
}