gpt4 book ai didi

msmq - "Category does not exist."为 MSMQ 队列创建性能计数器

转载 作者:行者123 更新时间:2023-12-01 23:50:40 25 4
gpt4 key购买 nike

我正在尝试:

using System.Diagnostics;

// ...
var queueCounter = new PerformanceCounter(
"MSMQ Queue",
"Messages in Queue",
@"machinename\private$\testqueue2");

Console.WriteLine( "Queue contains {0} messages",
queueCounter.NextValue().ToString());

来自这篇文章: Is there a way to check how many messages are in a MSMQ Queue?

提到了同样的错误,但在使用 PerformanceCounter 时没有解决。

我在这里也发现了提及: Performance Counter - System.InvalidOperationException: Category does not exist

但是,此线程从这个确切的主题开始,但在回答有关如何处理错误的初始问题之前转向了另一个方向。基本上我不需要知道每秒的记录数,我只需要知道队列何时开始备份。

是什么导致了这个错误?我已尝试指向私有(private)和公共(public)队列以及指向其中包含消息的队列。

编辑:我在 perfmon 中添加了计数器以确保服务器路径和队列名称正确。

最佳答案

好的...明白了。队列名称本身不包括它们正在运行的 machineName 的完全限定名称。我通过使用 PerformanceCounterCategory.GetInstanceNames() 发现了这一点。这为您提供了正确的队列名称。解决方法是使用 PerformanceCounter 的最后一个构造函数进行 new,它允许您指定机器名称。我指定的队列名称是机器名,但是机器名是全限定的:

new PerformanceCounter("MSMQ Queue", "Messages in Queue", @"<machine name>\private$\dispatch", @"<fully qualified machine name>"))

关于msmq - "Category does not exist."为 MSMQ 队列创建性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com