当尝试使用WMI获取MSMQ队列的队列长度时,大多数队列返回长度为0.
我试图通过.NET System.Management类,性能监视器和PowerShell(全部在本地服务器上运行)检索长度:
Get-WmiObject Win32_PerfFormattedData_msmq_MSMQQueue -Filter "Name LIKE '%QUEUENAME%'" | ft -AutoSize -property Name,MessagesInQueue,BytesInQueue;
我没有收到任何错误,所有方法都发现队列正常,他们每次只返回队列长度为0.
我知道队列中有消息通过.NET System.Messaging检查队列,GetAllMessages方法返回队列的正确长度,向下钻取到计算机管理队列也显示队列的正确长度。
有些队列似乎有效,并且从WMI报告了正确的长度,但我看不到任何可以区分它们的东西(它们是所有事务性,私有,非记录的队列,没有身份验证)
目前我们在服务器~2200上有很多队列,因为连接到我们服务器的每个硬件设备都有它自己的队列。到目前为止,这一直在运行,我们的实时环境没有问题,我们的通信引擎关闭消息并将消息放在所有队列上而没有任何问题。
服务器已经重新启动,因为我已经注意到了这一点,但这并没有解决问题。我正在查看的示例队列将硬件设备断开连接,因此通信引擎不会消耗来自这些队列的消息。
Server是来自Amazon AWS,Server 2012 R2的m3.medium。
我很难过,我不知道还有什么可以尝试解决这个问题。