您能否解释一下,使用可恢复消息时将使用多少 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 的值,则不会发生任何不好的事情。我正在使用这个方法重载,因为在帮助中有一些关于回调的东西,这是否意味着使用事件处理程序没有任何限制?