<HTML>
<HEAD>
<TITLE>Cluster Disk Node vs Ram Node explanation</TITLE>
</HEAD>
<BODY>
<FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>I know this has probably been discussed at length in this list and elsewhere.<BR>
<BR>
Reference:<BR>
<a href="http://groups.google.com/group/rabbitmq-discuss/msg/baa8f8b30ba423e0">http://groups.google.com/group/rabbitmq-discuss/msg/baa8f8b30ba423e0</a><BR>
<BR>
I just want to clarify:<BR>
<BR>
GIVEN:<BR>
</SPAN></FONT><UL><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>A load balanced cluster consisting of disk node A, ram node B, and ram node C<BR>
</SPAN></FONT></UL><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
WHEN:<BR>
</SPAN></FONT><UL><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>A client is routed to ram node B via the load balancer,
</SPAN></FONT><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>AND the client declares a <B>durable</B> <B>queue </B>on its connection to ram node B,
</SPAN></FONT><LI><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'>AND the client declares bindings to a topic exchange being serviced by a producer connected on ram node C;<BR>
</SPAN></FONT></UL><FONT FACE="Calibri, Verdana, Helvetica, Arial"><SPAN STYLE='font-size:11pt'><BR>
WHERE are the messages stored?<BR>
WHAT happens to the producer on ram node C when ram node B fails? (Does it block? Do messages continue to be delivered? Are messages to the client lost?)<BR>
<BR>
POSSIBLE ANSWERS:<BR>
<BR>
A) Messages are stored on disk node A but served up through ram node B.<BR>
If ram node B goes down, messages are preserved and when the client reconnects on any node, the messages can be retrieved. &nbsp;Since the messages are stored on disk node A, the producer connected on ram node C continues to publish messages to its topic exchange without blocking.<BR>
<BR>
B) They are stored on disk for ram node B. If ram node B goes down, the queue is unavailable for delivery, the producer on ram node C blocks on publishing of messages until ram node B comes back up again. (I&#8217;m assuming metadata of the network is shared by the cluster therefore ram node C, &#8220;knows&#8221; it has bindings to a durable queue on node B, which is unresponsive, so it blocks).<BR>
<BR>
C) They are not stored on disk for ram node B (unless under memory pressure). &nbsp;Any messages in memory are lost. C does not block on publishing of messages, but continues to publish messages to topic exchange. Bindings are non-existent until ram node B comes back up again, or the client reconnects/redeclares durable queue on another node for servicing.<BR>
<BR>
D) Something else?<BR>
<BR>
My inclination is to say A) is the right answer above. &nbsp;<BR>
<BR>
However, I just finished a soak test where my durable queue on ram node B lost messages over the weekend due to a network hiccup that crashed ram node B. When it came back up again messages were lost. &nbsp;As such, we are recommending our production configuration to be unclustered, disk node only until we better understand the benefits and use cases associated with clustering with RabbitMQ 2.5.1<BR>
<BR>
A simple tutorial or explanation of &#8220;To Disk Node or To Ram Node... that is the question&#8221; would be great and useful for those of us implementing, learning and teaching rabbit to our organizations.<BR>
<BR>
Regards,<BR>
--rparra<BR>
<BR>
</SPAN></FONT>
</BODY>
</HTML>