c# - 如何从队列中一次抓取一条 MSMQ 消息

标签 c# asp.net .net console-application msmq

我正在使用控制台应用程序 (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
                                }    
                            }    
                        }
                     }
                 }

以上代码运行良好。

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

最佳答案

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

编辑

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

关于c# - 如何从队列中一次抓取一条 MSMQ 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41956018/

相关文章:

c# - 如何从 C# App_Code 类中获取当前页面的 URL?

.net - 我们可以将 mono 捆绑在我们的安装包中吗?

c# - 绑定(bind)实际上是如何工作的?

c# - "Control.Site"属性是什么?

c# - 是否有必要在处置前取消cancellationtoken

c# - 在 asp mvc 4 中将 Json 文本解析为 C# 对象

c# - 在 C# 中获取特定进程的磁盘使用情况

c# - 如何在 ASP.Net 中检索上传文件的 "Last Modified Date"

asp.net - 使PasswordRecovery 控件能够与锁定的用户一起使用吗?

asp.net - 从 ASP.NET MVC 和移动设备使用 ASP.NET Web API