The complexity of simplicity

As you may have read, I've been working on some MSMQ configuration and coding for the last little while.  In the past I had always heard "Asynchronous System" and hid under my desk where the left over Skittles, M&Ms and Smarties are kept.  Looking back on the code that I've written thus far, and forward to the code I know I'm writing this week, I have to say that the MSMQ technology is not that difficult to work with.  The .NET namespace nicely encapsulates all that is needed (Queue and Message) and the amount of code required to actually send, retrieve or peek a message is minimal.

Where the difficulty arises is in the application of the code.  Most of the places I've worked in the past have had an architect at the keyboard philosophy and perhaps that is why the technology seemed so daunting.  The amount of scenarios, both technical and business, that you must consider are enormous.  What do you do if you run into a connectivity error when processing the message?  Put it back on the source Queue?  Ship it to the Dead Letter Queue?  What if the connectivity error occurs and then you can no longer write to any Queue?  Is writing the error to the Event Log acceptable?  On and on and on and on you can go.

I probably wrote no more than 25 to 50 lines of code to access 2 different Queues.  I also wrote about 300 to 500 lines of code to handle the potential gotchas of an asynchronous system.  Don't be scared of asynch, but allocate enourmous time for planning and preparing for all the different scenarios.

posted @ Sunday, September 25, 2005 2:38 PM

Print
Comments have been closed on this topic.