如何通过 C# .NET 获取 BizTalk Server 在任何给定时间点发送/接收的总消息?
有什么想法可以实现这一目标吗?
一种简单的方法是使用现有的 BizTalk Perfmon 计数器来监视消息(尽管自上次主机实例重新启动以来)
假设您已BizTalkServer
使用 a调用SendHost
并ReceiveHost
配置了 BizTalk Server,则以下消息计数器应指示发送/接收的消息:
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 表中获取该信息。这是一个存储所有活动的表。
唯一的要求是您应该关闭 BizTalk 环境中的全局跟踪属性。