Some us still do classical BizTalk Server development and recently I was faced with an old age problem namely “limiting the number of calls to a web service”. This Oracle CRM on Demand service would only allow a maximum of 5 concurrent calls. Up until now we had just limited the number of connections with an entry in the BizTalk Server configuration file. In the past we did not care if requests had to retry a couple of times because there was no in order or latency requirements. Recently a new requirement required a low latency response from this service and we could not tolerant timeouts or any retries.
I was pleased to find an old article by Seroter that show us what to do. This is based on an old BizTalk HotRod magazine article by Scott Colestock which is unfortunately no longer available. I have placed a copy of this old article in my archive here.
Time has not affected this pattern and soon we had it all working. We choose to throttle the connections that did not require low latency to 3 and were surprised to find the a sudden burst of requests processed in about the same time with and without the throttler. Clearly BizTalk still processes this very quickly but this time without retrying. This left at least two connections available for our low latency requests. This will do for now as soon we will move our endpoints to Salesforce which allows more concurrent connections.