BizTalk 2010 R2 CTP has been released - you can read more about it here. One of the features mentioned is - We have also made enhancements in our engine to improve the performance in ordered send port scenarios. Here, I'll briefly describe the enhancement we've made.

Assume you have 5 ordered send ports (SP1 through SP5) running in a host H1, and you have messages for each of these send ports available to be dequeued. In prior versions of BizTalk, the behavior you may have observed is that if there is a message M1 available for SP1, and another for SP2, then SP2 begins processing M2 only after SP1 has completed processing M1. The workaround we would propose to customers was to place these 5 send ports into 5 different hosts. This was feasible only if the number of ordered send ports was small.

In BizTalk 2010 R2, we've fixed this problem. No matter how many ordered send ports you have in a host, each will process its messages without blocking other ordered (or non-ordered) send ports. We use a separate thread for each ordered send port, and if you have (say) 500 ordered send ports in a single host, then you'll need to increase the Messaging Engine Threads setting so that we can spin up the necessary number of threads for you.