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

skb*_*skb 3 msmq

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

fel*_*bus 5

尝试这个..

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      
 }
Run Code Online (Sandbox Code Playgroud)