MSMQ使用问题

时间:2013-03-25 05:47:44

标签: .net msmq message-queue

您能解释一下,使用可恢复邮件时将使用多少RAM内存? 我知道,一条消息消耗大约70-80字节,这是好的,我知道消息体将保存到磁盘,但它可能还复制到RAM的主体? 我尝试用快速和可恢复的消息测试它(消息存储限制是1GB) - 并且在我看到进程资源管理器的两种情况下,msmq服务进程到达他的工作集(内存)到1gb。我明白,如果是快递消息,那也没关系,但是有了可恢复的消息,它会少得多!

第二个问题是关于MSMQ回调限制。

  

如果您收到带回叫的邮件,请考虑每个进程都可以   最多只能注册63个回调。如果你的回调在队列上等待   无限期地没有活动,您可能会达到此限制。

它适用于所有队列还是仅适用于一个队列?例如,我有处理,我做了类似的事情:

QueueFirst = new MessageQueue(@".\test") { Formatter = new BinaryMessageFormatter() };
QueueFirst.ReceiveCompleted += QueueOnReceiveCompleted;
QueueSecond = new MessageQueue(@".\test") { Formatter = new BinaryMessageFormatter() };
QueueSecond.ReceiveCompleted += QueueOnReceiveCompleted;
for (int i = 0; i < 63; i++)
{
    QueueFirst.BeginReceive(TimeSpan.FromSeconds(10), "", Callback);
    QueueSecond.BeginReceive(TimeSpan.FromSeconds(10), "", Callback);
}

我能这样做吗?我问,因为如果我将周期上限设置为超过63,那么没有什么不好的事情发生。我正在使用这个method overload,因为在帮助中有一些关于回调的东西,是否意味着使用事件处理程序没有任何限制?

1 个答案:

答案 0 :(得分:1)

如果可以提高性能,MSMQ会将消息存储在内存中。
消息也写入所有类型的磁盘 - 快速/可恢复/事务。
消息的大小对于确定RAM使用率并不重要。
This blog应该拥有了解消息如何使用内存所需的一切。
This blog也很有用。