繁体   English   中英

向MSMQ发送消息时出现问题

[英]Problems with Sending message to MSMQ

我有一种情况,其中我必须以消息头+有效负载的格式向下面的msmq发送消息。 以下是示例。

        Person Message
        <? Xml version="1.0"?>
        <Person>
        <Employee>
         <Name>Manthan</name>
        </employee>
        </Person>

如何将上述消息发送到msmq,我尝试了所有可能的解决方案,但仍然没有成功。 任何帮助将不胜感激。 提前致谢

下面是代码

       StringBuilder sb = new StringBuilder();
       sb.Append("Person Message"); 
       sb.Append("<?XML Version=\"1.0\">");
       sb.Append("<Person>");
       sb.Append("<Employee>");
       sb.Append("<Name>Manthan</Name>");
       sb.Append("</Employee>");
       sb.Append("</Person>");

      MessageQueue  msMq = new MessageQueue(MQPath);
      msmq.Send(sb.tostring());

MSMQ中的输出为

        <?xml version="1.0"?>
         <string>Person Message&lt;?XML       Version="1.0"&gt;&lt;Person&gt;&lt;Employee&gt;&lt;Name&gt;Manthan&lt;/Name&gt;&lt;/Employee&gt;&lt;/Person&gt;</string>

上面的消息与预期的输出不一样如何获得预期的输出

MSMQ将消息放入SOAP中,您将不得不反序列化结果....

MessageQueue  msMq = new MessageQueue(MQPath);
msmq.Send(sb.tostring());

Message[] msgs = msMq.GetAllMessages();

foreach (var msg in msgs)
      {
            System.IO.StreamReader reader = new System.IO.StreamReader(msg.BodyStream);
            MSGtext = reader.ReadToEnd();

            string MSGValue = (string)XmlDeserializeFromString(MSGtext);

        }
 }
 public object XmlDeserializeFromString(string objectData)
    {
        var serializer = new XmlSerializer(typeof(string));
        object result;

        using (TextReader reader = new StringReader(objectData))
        {
            result = serializer.Deserialize(reader);
        }
        return result;
    }

您将必须创建一个自定义消息格式化程序

        StringBuilder sb = new StringBuilder();
         sb.Append("Person Message");
         sb.Append("<?XML Version=\"1.0\">");
         sb.Append("<Person>");
         sb.Append("<Employee>");
         sb.Append("<Name>Manthan</Name>");
         sb.Append("</Employee>");
         sb.Append("</Person>");

         //write to Queue
         msMq.Formatter = new ActiveXMessageFormatter();
         msMq.Send(sb.ToString());

         //read From Queue
         MessageQueue  msMqReader = new MessageQueue(MQPath);
         msMqReader.Formatter = new ActiveXMessageFormatter();         

         Message msg = msMqReader.Receive();
         Console.WriteLine(msg.Body);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM