MSMQリスナーであるWindowsサーバーがインストールされています。非トランザクション応答キューに対して、プログラムでMSMQ統計カウンターを取得する必要があります。
2 に答える
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 からの結果は、より最新で信頼性があります。
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);
}
}