如何获取MSMQ队列中的所有可用消息获取当前队列中所有消息进行处理的最佳方法是什么?我们有一个队列,里面有很多非常小的消息,我想做的是读取所有当前消息,然后通过线程池发送它们进行处理。我似乎找不到任何好的资源来告诉我如何创建一个返回IEnnumerable的简单方法,例如谢谢虽然我同意Nick,但队列的目的更多是用于FIFO样式处理,ArsenMkrt的解决方案将起作用角色,另一种选择是使用MessageEnumerator并将消息堆积到IEnumerable中。varmsgEnumerator=queue.GetMessageEnumerator2();varmessages=newList();while(msgEnumerator.MoveNext(newTimeSpan(0,0,1))){varmsg=queue.ReceiveById(msgEnumerator.Current.Id,newTimeSpan(0,0,1));消息。添加(味精);}对于一些简单的...publicvoidDoIt(){boolcontinueToSeekForMessages=true;while(continueToSeekForMessages){try{varmessageQueue=newSystem.Messaging.MessageQueue(@"FormatName:Direct=OS:MyComputerNameHerePrivate$MyPrivateQueueNameHere");varmessage=messageQueue.Receive(newTimeSpan(0,0,3));message.Formatter=newSystem.Messaging.XmlMessageFormatter(newString[]{"System.String,mscorlib"});varmessageBody=message.Body;}catch(Exceptionex){continueToSeekForMessages=false;}}}。此外,可以使用peek而不是使消息出列。另外,可以使用GetMessageEnumerator2不会破坏队列的目的吗?队列应该保持消息的顺序,因此您必须循环并继续拉取第一条消息。最新版本的MSMQ还具有以下特点:你可以像这样获取单个对象中的所有消息:(编写你自己的“ReceiveCompleted事件”处理程序)以上是C#学习教程:HowtogetallavailablemessagesonanMSMQqueue如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注—privatestaticvoidMyReceiveCompleted(Objectsource,ReceiveCompletedEventArgsasyncResult){尝试{Message[]mm=mq.GetAllMessages();foreach(Messageminmm){//随心所欲}}catch(MessageQueueExceptionme){Console.WriteLine(me.Message);}最后{}返回;}收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
