C# .NET を介して BizTalk Server が特定の時点で送受信したメッセージの合計を取得するにはどうすればよいですか?
これを達成するためのアイデアはありますか?
BizTalk でのメッセージ追跡は、BAM を使用して行われます。もちろん、独自のデータベースとデータ アクセス API を作成することもできますが、なぜ作成するのでしょうか?!? 入門書として、 「ビジネス アクティビティ モニタリングの使用」を参照してください。学習曲線に惑わされないでください - 一度乗り越えれば、あなたはそれを好きになるでしょう!
この本には BAM に関する非常に優れたセクションがあります。バージョンに惑わされないでください。基本的な概念は 2010 にも当てはまります。
最後に、このツールは開発をスピードアップします。
簡単な方法は、既存の BizTalk Perfmon カウンターを使用してメッセージを監視することです (ただし、最後のホスト インスタンスの再起動以降)。
BizTalkServer
を使用して呼び出され、SendHost
構成された BizTalk Server があると仮定するとReceiveHost
、以下のメッセージ カウンターは、送受信されたメッセージを示します。
PerformanceCounter msgsReceivedCounter = new
PerformanceCounter("BizTalk:Messaging", "Documents received", "ReceiveHost", "BizTalkServer");
msgsReceivedCounter.ReadOnly = true;
PerformanceCounter msgsSentCounter = new
PerformanceCounter("BizTalk:Messaging", "Documents processed", "SendHost", "BizTalkServer");
msgsSentCounter.ReadOnly = true;
lblSent.Text = string.Format("{0}", msgsSentCounter.NextValue());
lblReceived.Text = string.Format("{0}", msgsReceivedCounter.NextValue());
グループに複数の BizTalk ホストがある場合は、すべてのホストを集約する必要があることに注意してください。
C# で PerformanceCounter クラスを使用する方法の詳細については、こちら を参照してください。BizTalk PerfMon カウンターの詳細については、こちらを参照してください。
この情報は、トラッキング データベースの MessageInOutEvents テーブルにクエリを実行することで取得できます。これは、すべてのアクティビティが格納される 1 つのテーブルです。
唯一の要件は、BizTalk 環境でグローバル追跡プロパティをオフにする必要があることです。