1

我正在为我构建的 MSMQ 应用程序做一些可扩展性测试。当发送大约 200k 条消息并尝试在服务器上接收时,我看到一些消息即将过期(使用 TimeToBeReceived = 30 秒)。我在消息上使用了 UseDeadLetterQueue,因此可以将这些消息移动到死信队列。一切都按预期工作。但是,即使我看到接收端有 1000 条消息即将到期,我也只能在死信队列中看到 1000 条消息。

有人见过这种行为,如果是这样,我该如何解决?

更新:我保留了 2 个柜台。一种是在将消息输入系统(发送者)时,另一种是在使用来自系统的消息时。如果我提供 200k 消息,在接收端..我只看到大约 190k 被消耗。因此丢失了 10k 条消息(很可能是因为 TimeToBeReceived 已过期)。我希望这 10k 条消息会出现在 DeadLetterQueue 中。但我在那里只找到1k。所以,我想知道 DeadLetterQueue 可以容纳多少个限制?

4

2 回答 2

4

在注册表中设置的非事务性 DLQ 上有一个空间配额 (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSMQ\Parameters\MachineCache\MachineDeadletterQuota),默认为 250MB。
消息有多大?1,000 条 250kb 的消息将超过默认配额。

于 2012-10-09T22:11:48.510 回答
1

如果 TimeToBeReceived 过期,您的意思是说您的消息应该移动到死信队列吗?

于 2012-10-03T11:22:56.103 回答