Thu Mar 14 15:04:54 GMT 2013
The minute you join one node to another to form a cluster something
dramatically changes: not every node has a full copy of every queue.
In a single node setup all of the information about a queue (metadata,
state, and contents) is fully stored in that node (Figure 5.1).
However, in a cluster when you create queues, the cluster only creates
the full information about the queue (metadata, state, contents) on a
single node in the cluster rather than on all of them (the cluster
tries to evenly distribute queue creation amongst the nodes). The
result is that only the =E2=80=9Cowner=E2=80=9D node for a queue knows the =
information about that queue. All of the =E2=80=9Cnon-owner=E2=80=9D nodes =
the queue=E2=80=99s metadata and a pointer to the node where the queue
actually lives. So when a cluster node dies that node=E2=80=99s queues and
associated bindings disappear. Consumers attached to those queues lose
their subscriptions, and any new messages that would have matched that
queue=E2=80=99s bindings become blackholed.
Does this mean, when a client create a queue in the cluster, this
queue is created on a random(?) node of the cluster, not the connected
node for the client?
More information about the rabbitmq-discuss