日期:2014-05-18  浏览次数:20827 次

怎么判断MSMQ消息队列溢满操作
1.我设置了一个消息队列里指定的大小。然后,我不停的往消息队列里发送消息。但问题来了,当消息队列的数据放满时,我继续点发送,代码还是可以运行通过,且不报错。
有没有什么方法可以判断发送消息是否发送成功,或者消息队列容量已满的代码啊,跪求啊。。。
我的发送消息队列代码
  try
  {
  //打开消息队列
  MessageQueue queue = new MessageQueue(".\\Private$\\MSMQDemo");
  //创建消息 message
  System.Messaging.Message message = new System.Messaging.Message();
  message.Body = "Hello MessageQueue";
  message.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
  //发送到队列里
  queue.Send(message);
  }
  catch
  { }

------解决方案--------------------
mssql有自己的规则,你定义的大小是你发送的数据的大小
------解决方案--------------------
MSMQ 也有自己的规则...

的确是不需要你来设定和读取他的大小.

根据微软的MSMQ开发者自己的说明,好像说超过20万行消息的话会出现一些问题. 但具体是什么我忘记了.

MSMQ是个速度极快的消息暂存器, 你需要迅速的 存放和取走, 如果你想去设定他的大小, 拿他当数据库用 那就是你的不对了. 因为这东西设计出来就是为了让 你快速读写的.

所以,MSMQ可以理解为一个独立于程序的数据缓冲区. 需要'缓冲区' 这个概念的时候你可以用上他.

如果需要存储数据, 你还是用数据库,或者直接文本文件吧.
------解决方案--------------------
这个代码可以检测msmq里消息的数量:

C# code

using System.Diagnostics;

PerformanceCounter objCounter = new PerformanceCounter("MSMQ Queue", "Messages in Queue", @"mymachine\private$\MyQueue");

int count = (int)(objCounter.NextValue());