Thanks to Harry Pierson for pointing out an interesting post from Libor Soucek.  He links to Harry and myself and states, basically, that durable messaging is not needed.  The logic is a bit hard to follow (possible due to the lack of a paragraph break anywhere in the post).  From what I can tell, he is saying this:

Libor’s logic: Durable messaging is a leaky abstraction.  In order to handle the leaks, you need to code compensation logic.  That creates complexity.  The complexity overcomes the benefits of the durable messaging.  Durable messaging is costly in terms of time.  Therefore, costs exceed benefits.  Therefore, don’t use durable messaging.  (I hope I got that right).

Hmmm. 

One fact that I think Libor missed: If we Don’t use durable messaging, then we have to put in compensation logic, because messages WILL fail.  (He did admit this, but doesn’t include this fact in his argument).

So, let’s look at the alternatives:

  • Durable messaging requires (according to Libor): complex compensation logic
  • Non-durable messaging requires: complex compensation logic.

Seems like this variable exists in both scenarios (again, according to Libor).  It is hardly a differentiator.

My take is actually that the AMOUNT of compensation logic needed drops dramatically when you have durable messaging.  Compensation logic is still required, but there is less of it, and it is less complex.

Therefore, the comparison SHOULD be:

  • Durable messaging requires (according to Nick): simplified compensation logic
  • Non-durable messaging requires: complex compensation logic.

Additional note: if you have a scenario where a message is being sent regularly, and it is OK to lose one, then you don’t need to use durable messaging.  Of course, if you have a scenario where neither the publisher nor the subscriber will ever fail, then durable messaging is overkill. 

On the other hand, if you have two systems, one is 99.99% reliable, and the other is 99.99% reliable, and you don’t use durable messaging, your reliability of the SYSTEM drops to 99.98%.  You’ve gone from four ‘9’s to three.  Four nines is HARD to get.  Losing that coveted level because of an unreliable message call pretty much kills the business case for message based integration.

I stand by my assertion.

By Nick Malik

Former CIO and present Strategic Architect, Nick Malik is a Seattle based business and technology advisor with over 30 years of professional experience in management, systems, and technology. He is the co-author of the influential paper "Perspectives on Enterprise Architecture" with Dr. Brian Cameron that effectively defined modern Enterprise Architecture practices, and he is frequent speaker at public gatherings on Enterprise Architecture and related topics. He coauthored a book on Visual Storytelling with Martin Sykes and Mark West titled "Stories That Move Mountains".

4 thoughts on “Is Durability in messaging 'bad'? Libor thinks so.”
  1. My son, like the rest of kids his age, as well as many others is spending every waking hour reading the latest Potter book. Ruby/IronRuby/CLR/DLR Great news from John Lam of the first public drop of the IronRuby source code . IronRuby is licensed under

Leave a Reply

Your email address will not be published. Required fields are marked *

nineteen − fourteen =

This site uses Akismet to reduce spam. Learn how your comment data is processed.