[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