我安装了一个MSMQ侦听器的Windows服务。我需要以编程方式为非事务响应队列获取MSMQ统计计数器。
答案 0 :(得分:0)
您可能希望查看效果计数器。
我还没有使用性能计数器用于MSMQ,但我确实将它们用于CPU负载等其他事情。进入并不难。
(来自下面的第一篇链接文章)
自第1天起,MSMQ表现计数器成为MSMQ的一部分。[...] 性能计数器很容易接近 通过WMI接口,以及许多监控工具与它们接口 无论如何。但是,使用perf时。计数器你没有得到最多 最新的数据并不总是准确的,特别是在 看远程机器。
以下是一些可以帮助您入门的文章:
第一篇文章还提到了 MSMQ Admin API ,我还没有使用过。所以我个人不能就此提出任何建议:
MSMQ Admin API随NT4 SP6a一起推出(所以你可能有 它们......)然而,直到MSMQ 3.0才提供它们的COM接口 (WXP或W2003)。如果你有WinNT或Win2K,你将不得不使用C 蜜蜂。另一方面,MSMQ Admin API的结果更多 当前可靠。
答案 1 :(得分: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);
}
}