如何从队列中读取MSMQ消息对象作为消息正文的字符串

时间:2011-01-26 21:19:26

标签: msmq

是否可以直接从队列中读取消息作为字符串(从查看来自计算机管理MSC管理单元的MSMQ消息时看到的同一消息体),以便我可以自己将其保留到数据库中?我想能够存储它以便以后重播而不会丢失任何数据,我担心如果反序列化/序列化它我可能会丢失一些东西。

1 个答案:

答案 0 :(得分:3)

试试这个..

string QueueName = @".\private$\publishingQueue"; 

//note, you cannot use method exists on remote queues

if (MessageQueue.Exists(QueueName))
{

 var queue = new MessageQueue(queueInfo.QueueName)
 {
 MessageReadPropertyFilter = new MessagePropertyFilter
 {
      ArrivedTime = true,
      Body = true
     }
 };


 var messages = queue.GetAllMessages();
 var m = messages[0];
 m.Formatter = new System.Messaging.XmlMessageFormatter(new String[] {});

 StreamReader sr = new StreamReader(m.BodyStream);

 string ms = "";
 string line;

 while (sr.Peek() >= 0) 
 {
      ms += sr.ReadLine();
 }

 //ms now contains the message      
 }