如何一次从队列中获取一条MSMQ消息

Pea*_*arl 4 .net c# asp.net msmq console-application

我正在使用控制台应用程序(C#)来读取MSMQ消息。

以下是工作代码。

C#(控制台应用程序)

static void Main(string[] args)
{
     MessageQueue[] myQueueArray = MessageQueue.GetPrivateQueuesByMachine("192.0.0.1");

                    if (myQueueArray != null)
                    {                    
                        foreach (MessageQueue mq in myQueueArray)
                        {
                            if (mq.QueueName.Contains("myqueue"))
                            {
                                myQueue = mq;
                                break;
                            }
                        }

                        if (myQueue != null)
                        {

                            Message[] messageList = myQueue.GetAllMessages();
                            if (messageList != null)
                            {                           
                                foreach (Message msg in messageList)
                                {    
                                 //doing some operation with the message
                                }    
                            }    
                        }
                     }
                 }
Run Code Online (Sandbox Code Playgroud)

上面的代码运行良好。

但是我想一一阅读MSMQ消息,这意味着我如何一次从队列中提取一条消息?

Adi*_*dil 5

您可以使用一次MessageQueue.Receive使单个消息出队,请参阅此MSDN 文章。您还可以使用BeginReceiveReceiveCompleted事件获取通知,请参阅此MSDN 文章

编辑

MSDN链接具有非常简单的示例代码,该示例代码帮助OP从MSMQ出队消息(通过注释指向)

  • 欢迎您,感谢您分享链接。 (3认同)
  • 谢谢。我的问题已解决。我发现以下网址。https://msdn.microsoft.com/zh-CN/library/system.messaging.messagequeue.endreceive(v=vs.110).aspx (2认同)