Search code examples
queuebiztalksend-port

BizTalk: Queue requests to a send port


I have a send port going to a web service. At most, I want only 10 requests to be send to the web service at a time. Is this possible to do in biztalk? Hopefully through configuration?


Solution

  • There is a post by Richard Seroter that deals with this exact scenario.

    You need to set the max connections in the btsntsvc.exe.config file:

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

    Where you filter by IP address and set the maxconnections to what you require.

    From the MSDN documentation on the HTTP Adapter it states that the address can be either a URL or an IP, an example config snippet is below:

    <configuration>
      <system.net>
        <connectionManagement>
          <add address = "http://www.contoso.com" maxconnection = "5" />
          <add address = "http://www.northwind.com" maxconnection = "2" />
        </connectionManagement>
      </system.net>
    </configuration>
    

    You then need to turn on ordered delivery in the send port to ensure that the BizTalk side will not timeout to the limited number of connections.

    While this looks like it does exactly what you want, I would also consider some sort of orchestration pattern to manage this, with a controler orchestration that limits the number of child "Send to the service" orchestrations that can run at one time. For me at least that would be a little bit easier to follow without needing external documentation.