怎么判断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());