If my understanding is correct, you can\'t actually look at messages in the rabbit queue without taking them out and putting them back in. There\'s no way to use rabbitmqctl to
There's no sane way to look at a queue, but maybe monitoring what goes in is a sufficient substitute. To do this, you need to implement a man-in-the-middle monitor. This requires cooperating clients: you need to teach either all senders or all receivers to use a different exchange.
Suppose you want to monitor messages to exchange "foo". You create a (direct) exchange named "foo-in" (or whatever), set up "foo" as an alternate exchange for "foo-in", and teach all your senders to send their messages to the "foo-in" exchange instead of "foo".
Your queue monitor then needs to listen to "foo-in", and to re-publish all messages to "foo". Whenever the monitor is not running, rabbitmq will route them to "foo" by itself; the performance penalty for this is negligible.
This is a rabbitmq extension. See http://www.rabbitmq.com/ae.html for details on how alternate exchanges work. Of course you can use "foo" and "foo-out", respectively, if that's easier to do in your setup.
Monitoring a specific queue (again: queue input, not output) is easier but again requires changing the client (or the code which creates your queues, if they're persistent). Set up a fan-out exchange, bind the client's queue to that, and then bind the exchange to the original messages source. This is another rabbitmq extension; see http://www.rabbitmq.com/e2e.html. Your monitor simply needs to bind to that exchange and will get copies of all messages sent to the client's queue.