Is Durability in messaging 'bad'? Libor thinks so.
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.
Comments
Anonymous
July 20, 2007
PingBack from http://lsblog.wordpress.com/2007/07/21/durable-messages-still-losing-over-redundancy-and-eda/Anonymous
July 20, 2007
It turns out I have written rather extended comment so did it as post and I'm linking it here only: http://lsblog.wordpress.com/2007/07/21/durable-messages-still-losing-over-redundancy-and-eda/Anonymous
July 23, 2007
My son, like the rest of kids his age, as well as many others is spending every waking hour reading theAnonymous
December 02, 2008
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