代码之家  ›  专栏  ›  技术社区  ›  Moshe Kravchik

MSMQ消息未到达

  •  2
  • Moshe Kravchik  · 技术社区  · 14 年前

    我有一个Web应用和一个服务,它们位于同一台机器上,通过消息队列进行通信。我遇到的问题是,大约有一半的时间我从服务发送的消息没有到达web应用程序中的读取代码。有些人会到,有些人不会。消息之间至少有1秒的延迟。

    我对MSMQ还不太熟悉,我想它是我错过的小东西,但从网上看,我想不出来。

    public SomeMethod
    {
     ...
        MessageQueue respQ = Utils.GetResponseQueue();
        respQ.Formatter = new XmlMessageFormatter(new Type[] { typeof(String) });
        respQ.ReceiveCompleted += new ReceiveCompletedEventHandler(OnReceiveCompleted);
        respQ.BeginReceive();
    }
    public void OnReceiveCompleted(Object source, ReceiveCompletedEventArgs asyncResult)
    {
        MessageQueue replyQueue = (MessageQueue)source;
        Message replyMessage = replyQueue.EndReceive(asyncResult.AsyncResult);
    
        try
        {
              //process the message
              //...
    
        }
        catch (Exception)
        {
        }
    
        replyQueue.BeginReceive();
    }
    

    希望对丢失的消息和管理控制台中未显示的消息提供帮助

    摩西

    1 回复  |  直到 14 年前
        1
  •  2
  •   Moshe Kravchik    14 年前

    看来我已经解决了。

    1. 丢失消息-最令人信服的问题不在队列中,而是在我如何处理读取的消息。我从AJAX计时器回发中检索它们,并将其添加到会话状态变量中。我发现的问题是,这个计时器回调有时出现在原始会话中,有时-不是。所以我没有看到我的一些信息被打印出来。