I have come across a situation at a client where they believe that queues are the answer for everything.  It is how they abstract their database from the applications.  The battle cry seems to be “If we go through a queue it is more flexible and ensures that messages between apps will get to their destination.

While I do believe that queues such as MSMQ and MQ Series have their place, they are not the answer to all the worlds woes.  Of course the same goes for any technology.  I have heard of companies that do the same thing with web services.

As the saying goes, “everything in moderation”.  Technology should be used where it is best suited.  Queues are great for processes that you don't need an immediate response and have high volumes.  The wrong place for a queue is where it holds a synchronous reply to a UI.

The last thing I want to address is the use of queues for database abstraction.  This is why we build configurable data layers in our applications.  Using a queue has not done any better job and slows down responses.

The main point here is not to get stuck on one technology or pattern.  One final cliché.  Just because you have a hammer doesn't make everything a nail.