向MSMQ发送消息时出现问题
本文关键字:问题 消息 MSMQ | 更新日期: 2023-09-27 18:25:46
我有一个场景,在该场景中,我必须以消息头+有效负载的格式向下面的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);
}