You are probably reading this snippet because you have a perfectly working Biztalk App that works and performs in development and unit test but fails during volume tests with a downstream LOB app like say Peoplesoft with which you are trying to post via HTTP.
As you may have realized already this due to a chunked encoding issue with BizTalk . BizTalk uses chunked encoding when a message is larger than 48 KB by default.
Well when the message payload size is large HTTP/1.1 RFC implementation allows you to specify to the listener that I am going to send you my message in a series of packets each with it's own size indicator with an Optional trailer containing entity header fields
This is to allow the recipient to verify that it has received the whole message.
To do this the sender must set the in the HTTP Header a property called
transfer-coding = "chunked"
It can then send data in chunks and the recipient if HTTP 1.1 compliant will start collecting data until it gets a chunk with chunk-size set to zero indicating end of transmission.
Great , How does it affect me
BizTalk HTTP Adapter does not set this header when sending chunked data causing downstream listeners to assume this is a whole transmission for a partial data packet. Now you know why your app works in your development box where one tends to test with smaller test files not in server at load :-)
What do I do to resolve this
Since you don't have a way of setting this HTTP Header , the other option is to disable chunking altogether in 2004 with a QFE
BizTalk 2004 SP1 and BizTalk 2006 already has the QFE so in this case all you need to do is to set the registry key DWORD DisableChunkEncoding to 1
as specified here
If you want to learn more about chunked encoding read the HTTP RFC section 3.6.1 here
If you had a scenario this post helped leave me a note
3 comments:
Brilliant, saved my weekend
I have encountered the same issue last summer. I have wasted a lot of time.
I have encountered this issue last summer and I have wasted a lot of time before finding this solution
Post a Comment