【发布时间】: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 语句。
-
嗯,我做到了 - 我切换到队列中的定期接收。现在我没有收到任何消息。