【问题标题】:MSMQ Messages not arrivingMSMQ 消息未到达
【发布时间】:2010-10-31 15:24:47
【问题描述】:

我有一个 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();
}

非常感谢有关丢失消息和管理控制台中未显示消息的帮助

莫舍

【问题讨论】:

  • 首先删除那个邪恶的 try/catch 语句。
  • 嗯,我做到了 - 我切换到队列中的定期接收。现在我没有收到任何消息。

标签: .net asp.net msmq


【解决方案1】:

嗯,看来我已经解决了。

  1. 在管理控制台中看不到消息的问题对我来说似乎很奇怪。如果队列不存在,我正在从我的代码中创建队列(就像在所有示例中一样)。事实证明,如果我将队列标签设置为某些东西 - 我可以在管理控制台中看到它的消息。否则——我不能。我没有寻找解释,表面上这些事情没有任何关系,对我来说似乎是一个错误。

  2. 缺少消息 - 很可能问题不在于队列,而在于我如何处理已读消息。我从 AJAX 计时器回发中检索它们并添加到会话状态变量中。我发现的问题是这个计时器回调有时会出现在原始会话中,有时 - 不会。所以我没有看到我的一些消息被打印出来。

【讨论】:

    猜你喜欢
    • 2012-04-12
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2015-03-20
    • 1970-01-01
    • 2012-05-22
    • 2014-09-23
    相关资源
    最近更新 更多