2013-09-30 3 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.

Смежные вопросы