我有一个发送端口转到Web服务。至多,我希望一次只能向Web服务发送10个请求。这可以在biztalk中做到吗?希望通过配置?
答案 0 :(得分:4)
有Richard Seroter的帖子可以处理这个确切的情况。
您需要在btsntsvc.exe.config文件中设置最大连接数:
<add address = "*" maxconnection = "2" />
按IP地址过滤并将maxconnections设置为您需要的位置。
在HTTP Adapter上的MSDN文档中,它指出地址可以是URL或IP,下面是一个示例配置片段:
<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端不会超时到有限数量的连接。
虽然这看起来完全符合您的要求,但我还会考虑使用某种编排模式来管理它,并使用控制器编排来限制可以一次运行的子项“发送到服务”编排的数量。对我来说,至少在不需要外部文档的情况下更容易理解。
答案 1 :(得分:0)
如果您使用的是内部网站,则无需添加以下语法
例如, 您的Webservice链接是http://example.com/ms/sample.aspx add address =“http://example.com”maxconnection =“5”
答案 2 :(得分:0)
关于David Hall的回答需要考虑的一些事项
如果您在发送端口上设置了有序传送,则会极大地影响吞吐量,尤其是如果您有很多业务流程对同一端口进行多次调用,那么Orchestration将脱水并等待他们的消息启用港口。如果您有一些来自Web服务的请求响应以及其他高负载而非紧急的实例,它也会导致问题。
为了避免这种情况,我们使用了BizTalk Orchestration Throttling Pattern,它最初来自Richard Seroter我们只允许一定数量的高容量业务流程一次启动,并保留一些连接低延迟请求/响应调用。
此外,maxConnections设置是按主机实例设置的,因此您还必须避免将多个发送端口连接到位于不同主机实例上的同一服务器,或者如果组中有多个BizTalk服务器并且无法避免,则必须设置maxConnections = TargetServermaxConnections / Host Instances