【问题标题】:How to receive MSMQ Messages如何接收 MSMQ 消息
【发布时间】:2013-09-30 12:45:40
【问题描述】:

接收 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();
                }

但我无法接收消息。

如何接收这些消息。

【问题讨论】:

    标签: msmq netmsmqbinding msmq-wcf


    【解决方案1】:

    我会使用异步 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 示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 2011-08-13
      • 2015-04-30
      • 2010-10-30
      • 2010-12-04
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多