2013-09-30 71 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示例。