Interesting new white paper from Microsoft on maintaining ordered delivery across concurrent orchestrations (read online or download here).
Specifically, this paper identifies an architecture where you receive messages in order, stamp them with a sequence number in a receive pipeline, process them through many parallel orchestration instances, and then ensure resequencing prior to final transmission. The singleton “Gatekeeper” orchestration does the resequencing by keeping track of the most recent sequence number, and then temporarily storing out-of-sequence messages (in memory) until their time is right for delivery.
One thing that’s wisely highlighted here is the considerations around XLANG/s message lifetime management. Because orchestration messages are being stored (temporarily) in an external .NET object, you need to make sure the XLANG engine treats them appropriately.
Good paper. Check it out.
Technorati Tags: BizTalk
I had a look at this many months ago and I’m not so sure this is a fantastic solution.
Basically this runs ALL message through the system through a resequencing orchestration with a throughput goal of 10 messages per second.
That is the best throughput throughout the system that you will acheive. If you are running millions of messages through system and you have spend millions of dollars for the system, this would be a sub-optimal use of the system.
Nice for the simple problem of ordering small, non-scaled environments, but it doesnt scale.
Thanks for the thoughts Tom. Probably fair to say that nearly any BizTalk singleton solution is at risk in the “scalability perspective.”