[英]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<?XML Version="1.0"><Person><Employee><Name>Manthan</Name></Employee></Person></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.