2009-12-15 66 views

回答

4

Richard Seroter有一个处理这个确切情况的帖子。

你需要设置在btsntsvc.exe.config文件中的最大连接数:

<add address = "*" maxconnection = "2" /> 

在那里你通过IP地址过滤和MaxConnections最大设置为你所需要的。

从它指出地址可以是一个URL或IP,比如说配置片断低于HTTP Adapter MSDN文档:

<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端不会超时到有限的连接数。

尽管看起来它完全符合您的要求,但我还会考虑某种编排模式来管理此问题,同时使用控制器编排来限制子项“发送到服务”的编排,这些编排可以在一个时间。对我而言,至少在不需要外部文档的情况下可以轻松一点。

+0

谢谢。我也听说你可以创建一个新的biztalk主机,将它关联到肥皂适配器,并在发送端口中使用该主机,并通过主机配置来限制主机。我还没有得到这个工作。 – Jeremy 2009-12-15 21:54:45

+0

是的 - 我也听说过这种方法 - 对我来说这是三种中最糟糕的一种,但......并不能真正表达出为什么超越它有一个模糊的“错误”。主机节流当然是一个完全有效的主机使用,但对于单个Web服务......不太确定。 – 2009-12-15 22:10:10

+0

因此,对于地址,我可以把“http://serverdnsname/webservice.asmx”这样的值作为值吗?那有效吗? – Jeremy 2009-12-15 22:27:03

0

有几件事情考虑关于大卫霍尔的回答

如果您在发送端口上设置了有序传送,您将极大地影响吞吐量,特别是如果您有很多业务流程对这些业务流程进行多个呼叫到相同的端口正在脱水并等待他们的信息才能开启港口。如果您有一些实例是来自Web服务的请求响应以及其他高负载且不紧急的其他实例,则也会导致问题。

为了避免这种情况,我们使用了BizTalk Orchestration Throttling Pattern这也是从Richard Seroter最初,我们仅允许一定数量的高容量业务流程中的一个的时间旋转,并留下一些连接免费为低延迟请求/响应的呼叫。

此外maxConnections设置是针对每个主机实例的,因此您还必须避免将多个发送端口连接到位于不同主机实例上的同一服务器,或者如果组中有多个BizTalk服务器并且无法避免它设置maxConnections = TargetServermaxConnections /主机实例