怎么判断MSMQ消息队列溢满操作

gao424424 2012-06-06 09:10:17
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
{ }
...全文
472 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiwenyu 2012-06-06
  • 打赏
  • 举报
回复
支持,不用你关心大小
chichenzhe 2012-06-06
  • 打赏
  • 举报
回复
MSMQ 也有自己的规则...

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

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

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

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

如果需要存储数据, 你还是用数据库,或者直接文本文件吧.
  • 打赏
  • 举报
回复
这个代码可以检测msmq里消息的数量:


using System.Diagnostics;

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

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



你可以根据需要,判断如果大于某个数就不再发送
「已注销」 2012-06-06
  • 打赏
  • 举报
回复
mssql有自己的规则,你定义的大小是你发送的数据的大小
裸奔的蜗牛 2012-06-06
  • 打赏
  • 举报
回复
我的理解是这个私有对列是存储在本地硬盘上的 硬盘空间决定了其大小 不知对不对

111,101

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧