2013-09-30 120 views
1

什么是接收MSMQ消息的最佳方式。如何接收MSMQ消息

我用下面的代码,但在接收MSMQ消息后在队列

var msgEnumerator = myQueue.GetMessageEnumerator2(); 
      var messages = new List<System.Messaging.Message>(); 
      while (msgEnumerator.MoveNext(new TimeSpan(0, 0, 1))) 
      { 
       var msg = myQueue.ReceiveById(msgEnumerator.Current.Id, new TimeSpan(0, 0, 1)); 
       messages.Add(msg); 
       for (int i = 0; i < messages.Capacity; i++) 
       { 
        String DataMessages = messages[i].ToString(); 
       } 

没有得到除去,但我不能接收消息。

如何接收这些消息。

回答

2

我会用异步MessageQueue.BeginPeek开始监听队列:

queue.BeginPeek(); 

然后与MessageQueue.PeekCompleted注册事件的处理程序:

queue.PeekCompleted += new PeekCompletedEventHandler(MessageHasBeenReceived); 

然后在你的处理器使用的MessageQueue。 EndPeek访问消息。请记得再次致电BeginPeek。

private void MessageHasBeenReceived(object sender, PeekCompletedEventArgs e) 
{ 
    // Get message 
    var msg = queue.EndPeek(e.AsyncResult); 

    // Do message processing here 
    .... 

    // Remove message from queue 
    queue.ReceiveById(msg.Id); 

    // Listen for more messages 
    queue.BeginPeek(); 
} 

请参阅MSDN示例。