0

如何通过 C# .NET 获取 BizTalk Server 在任何给定时间点发送/接收的总消息?

有什么想法可以实现这一目标吗?

4

3 回答 3

2

BizTalk 中的消息跟踪是使用 BAM 完成的。当然,您可以编写自己的数据库和数据访问 API,但为什么要编写?!?有关入门,请参阅使用业务活动监控。不要被学习曲线吓到——一旦你克服了它,你就会爱上它!

这本书有一个非常好的 BAM 部分,不要被版本推迟——基本概念仍然适用于 2010 年。

最后,此工具将加快您的开发速度。

于 2012-08-09T10:47:43.400 回答
1

一种简单的方法是使用现有的 BizTalk Perfmon 计数器来监视消息(尽管自上次主机实例重新启动以来)

假设您已BizTalkServer使用 a调用SendHostReceiveHost配置了 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 计数器的信息在这里

于 2012-08-10T10:20:30.103 回答
0

您可以从查询跟踪数据库 MessageInOutEvents 表中获取该信息。这是一个存储所有活动的表。

唯一的要求是您应该关闭 BizTalk 环境中的全局跟踪属性。

于 2012-08-26T15:19:48.770 回答