<a href="http://www.rabbitmq.com/clustering.html">http://www.rabbitmq.com/clustering.html</a> says:<div><br><div><blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex; ">

All data/state required for the operation of a RabbitMQ broker is replicated across all nodes, for reliability and scaling, with full ACID properties. An exception to this are message queues, which currently only reside on the node that created them, though they are visible and reachable from all nodes. Future releases of RabbitMQ will introduce migration and replication of message queues.</blockquote>

<div><br></div><div>I don&#39;t understand that sentence that says the queues only reside on the node that created them -- but they are visible on both.  Is that talking about replicating *messages* or queues?  Queues and messages are separate things.  I understand that messages are not duplicated/replicated in the cluster.</div>

<meta charset="utf-8"><div><br></div><div>I have two nodes in a cluster node1 and node2 (on same server, different ports).  I declare an exchange, queue, and binding on node1 only.  Next, I start consumers on node1 and node2 -- these do not declare the queue, they only consume.  This succeeds so therefore the queue is accessible from both node1 and node2.</div>

<div><br></div><div>Next I connect to node1 and send two messages to the queue.  One message ends up with the consumer on node1 and the consumer on node2 receives the other message.</div><div><br></div><div>What&#39;s the distinction between &quot;residing&quot; and &quot;visible&quot;?  Does it mean the messages are only stored on node1 until consumed (by either node)?  But, I can declare the same queue on both nodes and see the same behavior.  Can someone please clear this up for me?</div>

<div><br></div><div><br></div><div>What I have failed to find when reading about clustering is how to connect to the nodes in a cluster.  If I have node1 and node2 in my cluster and 10 producers (say web servers) and 4 worker machines do I configure 5 producers to connect to node1 and 5 to node2, and then likewise split the consumer connections across the two nodes?</div>

<div><br></div><div>To be clear, this is not HA.  So, if node1 fails then 1/2 the producers and 1/2 the consumers can no longer function.  Correct?</div><div><br></div><div><br></div><div>Or is the typical approach to use something like HAProxy in front of node1 and node2 and have all consumers and producers connect to HAProxy?  (That ends up as a single point of failure.)</div>

<div><br></div><div><br></div><div><br></div>-- <br>Bill Moseley<br><a href="mailto:moseley@hank.org" target="_blank">moseley@hank.org</a><br>
</div></div>