I have a BizTalk send port that sends small xml messages via HTTP to a RESTful WCF service. Things are getting clogged up at the service due to some crappy code causing DB deadlocks. Just over 3000 messages were sent at a 100 message per minute. BizTalk appears to be able to attempt to send them all. IIS on the receiving end appears to get saturated and can no longer process. The messages just sit on the BizTalk server with a Message Status of In Process and a Serice Status of Active. I did see a small handful that got suspended due to time out (see err msg below). Eventually, we reset IIS on the subscribing web server and messages began to get processed on the BizTalk server again.
My questions is, how does BizTalk know that the receiving server is saturated or does it? If it is smart enough to detect the subscribing service as busy then why the few suspended messages?
The adapter failed to transmit message going to send port "EnterpriseMsgToProducerMgmtSubscriberSvcSendPort" with URL "http://blah.blahcorp.com/serviceproducermanagement/serviceproducermanagement.svc/xml/event". It will be retransmitted after the retry interval specified for this Send Port. Details:"The HTTP send adapter cannot complete the transmission within the specified time. Destination: http://blah.blahcorp.com/serviceproducermanagement/serviceproducermanagement.svc/xml/event ".
After further research I noticed that the HTTP adapter generated 248 NACK messages with same message as above. The only thing I really don;t understand here is that why did I get 248 NACKs but only about 30 of the same error messages in the Event Viewer. And none of the aformentioned suspended messages were not related ... there were no suspended messages related to these 3000 messages.