我安装了一个 Windows servive,它是一个 MSMQ 侦听器。我需要以编程方式为非事务响应 quque 获取 MSMQ 统计计数器。
问问题
328 次
2 回答
0
这是您从中获取消息队列计数的代码,您只需要传递您想要 msmq 计数的队列的名称。
//Here QueueName is Pass from Calling Function for which you want count of messages.
Public MessageCount(string QueueName)
{
int messageCount = 0;
try
{
string fullyQualifiedQueueName = string.Format(@"{0}\{1}", Environment.MachineName, QueueName);
PerformanceCounterCategory category = new PerformanceCounterCategory("MSMQ Queue");
PerformanceCounter cntr = new PerformanceCounter("MSMQ Queue", "Messages in Queue");
if (category.InstanceExists(fullyQualifiedQueueName.ToLower()))
{
cntr.InstanceName = fullyQualifiedQueueName.ToLower(CultureInfo.CurrentCulture);
messageCount = (int)cntr.NextValue();
}
((IDisposable)cntr).Dispose();
Console.WriteLine("Message Count is {0}", messageCount.Tostring());
}
Catch(Exeption Ex)
{
Console.WriteLine("Error : {0}",Ex.Message);
}
}
于 2014-07-21T10:45:57.940 回答
0
您可能想查看Performance Counters。
我还没有使用 MSMQ 的性能计数器,但我确实将它们用于其他事情,例如 CPU 负载。进入并不难。
(来自下面的第一篇链接文章)
MSMQ 性能计数器从第一天开始就是 MSMQ 的一部分。[...] 性能计数器很容易通过 WMI 接口接近,而且许多监控工具都与它们交互。但是,当使用 perf. 计数器您无法获得最新数据,并且它们并不总是准确的,尤其是在查看远程机器时。
这里有几篇文章可以帮助您入门:
第一篇文章还提到了我还没有使用过的MSMQ Admin API 。所以我个人不能给出任何建议:
MSMQ Admin API 是随 NT4 SP6a 引入的(因此您可能拥有它们……)但是直到 MSMQ 3.0(WXP 或 W2003)才提供它们的 COM 接口。如果您有 WinNT 或 Win2K,则必须使用 C API。另一方面,来自 MSMQ Admin API 的结果更加最新和可靠。
于 2013-02-08T12:19:18.670 回答