如何使用MSMQ服务

时间:2016-07-08 09:45:47

标签: msmq msmq-wcf

我想使用msmq服务。但无法将消息发送到队列。 这是我的代码。

System.Messaging.MessageQueue msmQ = new System.Messaging.MessageQueue("net.msmq://myServerName/private/MyQueueName");

msg ="<nodeDetails><node>Node1</node></nodeDetails>";//Dummy value. it is XML structure consist of multiple node
 msmQ.Send(msg);

它在msmQ.Send(msg)上给我错误

错误消息=&#34;长度不能小于零。 参数名称:长度&#34;

以下内容安装在我的m / c

  1. Microsoft消息队列(MSMQ)服务器
  2. 窗口激活过程
  3. 当我尝试

     bool msmQExits = MessageQueue.Exists("net.msmq://myServerName/private/MyQueueName");
    

    但是它给出了#34; Path语法无效&#34;

    我无法得到任何东西。 我所拥有的只是一个msmq URL&#34; net.msmq:// myServerName / private / MyQueueName&#34;

    请告诉我如何使用此类网址并将我的消息发送至&#34; MyQueueName&#34;

    感谢任何帮助

    先谢谢。

2 个答案:

答案 0 :(得分:0)

将您的队列名称更改为:

var queueName = @"FormatName:DIRECT=HTTP://URLAddressSpecification/net.msmq://myServerName/private/MyQueueName";

您无法通过MessageQueue.Exists方法检查是否存在远程查询。它总会抛出异常。

您可以查看这些链接以获取更多信息:

此外,问题不在于您看到长度小于0的消息。如果您更深入并检查堆栈跟踪,您将看到您的队列名称格式无效。它会尝试在您的队列名称中找到FORMAT个匹配项,但找不到它,Substring()方法会在那里返回-1

堆栈跟踪:

   at System.String.Substring(Int32 startIndex, Int32 length)
   at System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath(String queuePath, Boolean throwException)
   at System.Messaging.MessageQueue.get_FormatName()
   at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
   at System.Messaging.MessageQueue.Send(Object obj)
   at MessagingTest.Program.SendMessage(String str, Int32 x) in c:\Users\ivan.yurchenko\Documents\Visual Studio 2013\Projects\MSMQTestProjects\MessagingTest\MessagingTest\Program.cs:line 21
   at MessagingTest.Program.<Main>b__1() in c:\Users\ivan.yurchenko\Documents\Visual Studio 2013\Projects\MSMQTestProjects\MessagingTest\MessagingTest\Program.cs:line 38
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()

答案 1 :(得分:0)

以下是如何使用该服务的示例。

它具有Wcf服务,物理MSMQ和客户端项目。因此,您必须有一个WCF服务来接收消息,msmq用于存储消息,而客户端则用于发送消息。

http://www.codeproject.com/Articles/326909/Creating-a-WCF-Service-with-MSMQ-Communication-and