【发布时间】:2013-03-14 13:25:08
【问题描述】:
您能否解释一下,使用可恢复消息时将使用多少 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,因为在帮助中有一些关于回调的东西,是否意味着使用事件处理程序没有任何限制?
【问题讨论】:
-
你为什么看工作集? getgreenshot.org/2010/07/24/…
标签: .net msmq message-queue