So I was bound and determined to find out the behavior of how BizTalk handles the order of messages.
I created the following flow within BizTalk. This is a two step process. BizTalk gets messages, distributes them to three different subscribers, three send ports and one orchestration.
Here is the flow:
So the MLLP receive location looks like this:
The non-ordered send port simply does not have the following check mark
The ordered send port looks like this:
The orchestration looks like this: I put an atomic scope shape so that I wouldn’t pick up the same message, as I was filtering off of the InboundTransportLocation. So in the orchestration, I changed the inbound transport location to localhost:99999 so no other orchestrations would pick it up, and I simply could bind the send port to the logical port.
Things I discovered:
The unordered send port runs fast, however, as you can see from the messages. They are definitely not in any order…
The ordered delivery send port does keep the messages in the right order. However, look at how long it takes to process those messages! It is nearly 2-3 seconds between messages! As I was watching the active send port, looking at the messages, I could see the messages slowly leaving.
Here are the times it took to process each of the messages
The Orchestration process keeps the order intact, and processes the messages just as fast as the unordered send port.
It is apparent that the check mark for ordered delivery in the send port is executing different logic than the orchestration that has the same ordered delivery setting.
My recommendations is to use a convoy orchestration to order the messages and send them on.