有没有更好的方法来计算消息队列(MSMQ)中的消息?

Dam*_*isa 7 c# performance msmq

我现在这样做:

MessageQueue queue = new MessageQueue(".\Private$\myqueue");
MessageEnumerator messageEnumerator = queue.GetMessageEnumerator2();
int i = 0;
while (messageEnumerator.MoveNext())
{
    i++;
}
return i;
Run Code Online (Sandbox Code Playgroud)

但是由于显而易见的原因,它只是感觉不对 - 我不应该遍历每一条消息只是为了得到一个数,我应该吗?

有没有更好的办法?

Dav*_*all 4

在 C# 中,答案似乎是否定的 - 您正在做的事情是实现此目的的唯一方法之一,所有其他方法都是类似的。

有多种方法可以使用 WMI 或 COM 来执行此操作 - 查看MSMQManagement com 组件。它有一个 MessageCount 属性。


我发现以下帖子可能会给您一些其他一些更好的纯 C# 实现的想法:

从 C# 计算 MSMQ 消息队列中的消息数

虽然上述内容似乎都是正确的,但我应该注意,我从未尝试过使用 MSMQ 执行此操作 - 我只从队列中执行过标准读取。