0

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

4

1 回答 1

1

MSMQ 尽可能将消息存储在内存中以提高性能。
所有类型的消息也写入磁盘 - 快速/可恢复/事务性。
消息的大小对于确定 RAM 使用情况并不重要。
该博客应该包含您了解消息如何使用内存所需的一切。
这个博客也很有用。

于 2013-03-25T11:17:24.793 回答