2013-02-06 73 views

回答

0

您可能想看看性能計數器

我還沒有使用MSMQ的性能計數器,但我確實使用它們來處理其他事情,比如CPU負載。進入並不難。

(從下面的第一個鏈接的文章)

MSMQ性能計數器,因爲每日1次。[...] 性能計數器很容易通過WMI接口接近 ,許多監控工具MSMQ的一部分無論如何,他們的接口 。但是,使用perf時。計數器你並沒有得到最新的數據,並且它們並不總是準確的,特別是當看到遠程機器時。

這裏有一些文章,讓你開始:

的第一篇文章還提到MSMQ管理員API,這我還沒有用過。所以,我個人不能提供有關它的任何建議:

MSMQ管理API用NT4 SP6a的介紹(所以你可能有 他們...),但是一個COM接口,直到MSMQ 3.0 (WXP或W2003沒有提供)。如果您有WinNT或Win2K,則必須使用C API。另一方面,來自MSMQ Admin API的結果更具有當前和可靠的 。

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); 
     } 
    } 
相關問題