1

MSMQリスナーであるWindowsサーバーがインストールされています。非トランザクション応答キューに対して、プログラムでMSMQ統計カウンターを取得する必要があります。

4

2 に答える 2

0

Performance Countersを見たいと思うかもしれません。

MSMQ にはまだパフォーマンス カウンターを使用していませんが、CPU 負荷などの他の目的には使用していました。入るのはそれほど難しくありません。

(以下の最初のリンク先記事より)

MSMQ パフォーマンス カウンターは、1 日目から MSMQ の一部でした。[...] パフォーマンス カウンターは、WMI インターフェイスを介して簡単にアクセスでき、とにかく多くの監視ツールがそれらにインターフェイスします。ただし、perf を使用する場合。カウンターは最新のデータを取得できず、特にリモート マシンを見ると常に正確であるとは限りません。

開始するためのいくつかの記事を次に示します。

最初の記事では、まだ使用していないMSMQ Admin APIについても言及しています。したがって、私は個人的にそれについて推奨することはできません。

MSMQ Admin API は NT4 SP6a で導入されました (おそらくお持ちのことでしょう...) が、それらへの COM インターフェイスは MSMQ 3.0 (WXP または W2003) まで提供されませんでした。WinNT または Win2K を使用している場合は、C API を使用する必要があります。一方、MSMQ Admin API からの結果は、より最新で信頼性があります。

于 2013-02-08T12:19:18.670 に答える
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 に答える