【发布时间】:2010-12-26 23:23:21
【问题描述】:
我有一个发送端口连接到网络服务。最多,我希望一次只向 Web 服务发送 10 个请求。这可以在biztalk中做到吗?希望通过配置?
【问题讨论】:
我有一个发送端口连接到网络服务。最多,我希望一次只向 Web 服务发送 10 个请求。这可以在biztalk中做到吗?希望通过配置?
【问题讨论】:
Richard Seroter 有一篇帖子专门讨论了这种情况。
您需要在 btsntsvc.exe.config 文件中设置最大连接数:
<add address = "*" maxconnection = "2" />
您在哪里按 IP 地址过滤并将最大连接数设置为您需要的。
来自HTTP Adapter 上的 MSDN 文档,它指出地址可以是 URL 或 IP,示例配置 sn-p 如下:
<configuration>
<system.net>
<connectionManagement>
<add address = "http://www.contoso.com" maxconnection = "5" />
<add address = "http://www.northwind.com" maxconnection = "2" />
</connectionManagement>
</system.net>
</configuration>
然后您需要在发送端口中打开有序传递,以确保 BizTalk 端不会超时到有限的连接数。
虽然这看起来完全符合您的要求,但我也会考虑使用某种编排模式来管理它,使用控制器编排来限制可以一次运行的子“发送到服务”编排的数量.至少对我来说,这会更容易理解而不需要外部文档。
【讨论】:
如果您使用的是内部站点,则不需要添加以下语法
例如, 您的 Web 服务链接是 http://example.com/ms/sample.aspx 添加地址=“http://example.com”最大连接=“5”
【讨论】:
关于大卫·霍尔的回答需要考虑的几件事
如果您在发送端口上设置了有序传递,您将极大地影响吞吐量,特别是如果您有很多编排对同一个端口进行多次调用,因为这些编排将脱水并等待他们的消息打开港口。如果您有一些实例是来自 Web 服务的请求响应,而另一些实例是高负载且不紧急的,也会导致问题。
为了避免这种情况,我们使用了 BizTalk Orchestration Throttling Pattern,它也来自 Richard Seroter,最初我们只允许一定数量的高容量编排一次启动,并为低延迟请求留出一些空闲连接/响应电话。
此外,maxConnections 设置是针对每个主机实例的,因此您还必须避免将多个发送端口发送到位于不同主机实例上的同一服务器,或者如果您在一个组中有多个 BizTalk 服务器并且无法避免它,您必须设置 maxConnections = TargetServermaxConnections / Host Instances
【讨论】: