[rabbitmq-discuss] mnesia tables

Emile Joubert emile at rabbitmq.com
Fri May 13 10:14:53 BST 2011


Hi Alain,

> I am debugging a case where we have 4 messages
> (financial transactions) that are stuck in the queue in un-Acked state.
> Without some type of messageId or transactionID, I have to look directly
> at mnesia file system and try to find my data. It would be nice to be
> able to dump the records to analyse the data in the various queues (kind
> of a mysqldump that would be legible).

The contents of messages are on disk in a specialised format or in RAM 
(or both), instead of mnesia tables, so mnesia browsing won't solve this 
problem.

If you are trying to track down which consumer amongst many is 
responsible for failing to acknowledge some messages, then "rabbitmqctl 
list_channels messages_unacknowledged" and "rabbitmqctl list_consumers" 
could help.

For debugging you could have all clients connect via a proxy that tracks 
which consumers receives and acknowledges messages. A comparison will 
reveal unacknowledged messages. The tracer tool ( 
http://www.rabbitmq.com/faq.html#analyse-network-traffic ) or Wireshark 
( http://wiki.wireshark.org/AMQP ) may help.

Another option is to provide an alternative queue implementation which 
is browsable. Alternative queue implementations that implement these 
callbacks (
http://hg.rabbitmq.com/rabbitmq-server/file/default/src/rabbit_backing_queue.erl 
) can be swapped in by defining the "backing_queue_module" erlang 
variable appropriately. If your queue implementation stores messages in 
a SQL database then a "select" statement will list messages.

-Emile



More information about the rabbitmq-discuss mailing list