在 MSMQ 中,我将所有队列的消息存储限制设置为 1(KB)。对于创建的队列testQueue
,我没有检查Limit message storage,所以所有消息的总大小应该不超过 1K = 1024 字节。但实际上它不是。MSMQ 只接收 624 个字节!
这是我发送消息的方式:
var mq = new MessageQueue(@".\private$\testQueue");
var sb = new StringBuilder();
for (int i = 0; i < 584; i++)
{
sb.Append("a");
}
mq.Send(sb.ToString());
在 MSMQ 中,消息体是:
<?xml version="1.0"?>
<string>aaaaaaa...aaaaaaa</string>
- 大小
xml header = 21
- 没有内容的根元素的大小:
string></string> = 17
- 标题和根之间的新行:
\r\n = 2
- 根元素的内容 = 584
-----总计 = 624 字节
当我尝试将 584 增加到 585 时,出现资源不足的错误。如果我将限制消息存储更改为 2(KB),我也不能发送 2048 字节但更少。
我在这里想念什么?