[rabbitmq-discuss] max amount of persisted data

Matthias Radestock matthias at lshift.net
Wed Mar 18 07:52:05 GMT 2009

Matthias Radestock wrote:
> unacked_message_q in rabbit_channel keeps track of the ids of
> messages that have been sent to consumers but have not been ack'ed
> yet. It does not hold undelivered messages and it does not hold
> message content. That all happens in rabbit_amqqueue_process' #q.q
> field (which I reckon Tony thought you were talking about), and
> rabbit_persister's #psnapshot.queues field (for persistent messages).

Just to correct some minor inaccuracies in the above ...

- rabbit_channel's unacked_message_q does in fact hold message content, 
not just ids. But, as stated above, the messages are only those that 
have been sent to consumers and not yet acknowledged. So generally that 
should just be a few messages.

- The field in rabbit_amqqueue_process' #q state which contains the 
message queue is called 'message_buffer', not 'q'.

tsuraan wrote:
> can hot standby rabbits be made by rsync'ing the
> /var/lib/rabbitmw/mnesia directory to another machine?  To rephrase
> the question, is the data on disk always valid, or at least
> recoverable?  Obviously any work done between the snapshot and the
> machine failure would be lost, but would the on-disk data be usable?

There have been some discussions on the list about using a SAN to hold 
the /var/lib/rabbitmq/mnesia dir. Generally that (and the rsync 
technique you suggest) should work, and the data should be recoverable.

An important constraint is that the Erlang node name must remain 
unchanged, i.e. you must not use one node's /var/lib/rabbitmq/mnesia dir 
on a node with a different name.


More information about the rabbitmq-discuss mailing list