基本的Microsoft Message Queue实现存在以下问题:
在阅读方面,无论我在发送方输入什么,消息的Formatter
属性始终为空。
发送代码:
System.Messaging.Message m = new System.Messaging.Message("string to send");
m.Formatter = new XmlMessageFormatter( new Type[1] { typeof(string) } );
queue.Send(m, "label");
接收代码:
MessageEnumerator enumerator = queue.GetMessageEnumerator2();
while (enumerator.MoveNext())
{
Message m = enumerator.RemoveCurrent();
Console.WriteLine("MSQ: " + m.Label);
Console.WriteLine("Formatter: " + m.Formatter.GetType().ToString()); // crash because formatter property is null
Console.WriteLine("Body: " + m.Body); //also crashes since formatter is null
}
由于Formatter
为空,我也无法得到m.Body
这是我最需要的。
答案 0 :(得分:4)
MessageQueue.Formatter
属性消息反序列化。因此,您必须在接收代码中初始化MessageQueue.Formatter
属性(队列 .Formatter):
((XmlMessageFormatter)queue.Formatter).TargetTypes = new Type[1] { typeof(string) };