RabbitMQ browser
A RabbitMQ connection opens on the Browser: the virtual host's queues and exchanges on the left, the selected one's details or peeked messages on the right, and the bottom panel withServer Details, Connections, Consumers and theTail anchor. The list, peeks, stats and the Connections and Consumers tabs come from the management API (see Connect a broker); without it you can still tap an exchange by name at the Tail anchor.
Queues & exchanges
The list shows the profile's vhost only: its queues first, then its exchanges. The default exchange ("") is left out; amq.* exchanges stay, and internal ones such as amq.rabbitmq.trace are dimmed.
Name Kind Msgs Ready/Unacked Consumers Rate
▶ orders queue 412 400/12 2 9.6/s
orders.audit quorum 1000 1000/0 0 2.0/s
events stream 5200 5200/0 1 4.1/s
amq.topic topic 0.0/s
orders.x direct 9.6/s| Kind | queue (classic), quorum or stream; an exchange's type:topic, direct, fanout, headers, or a plugin's. |
| Msgs | Messages in the queue, then how many are ready and how many delivered but unacked. |
| Consumers | Consumers on the queue. |
| Rate | Messages published per second, into the queue or into the exchange. |
Columns drop off from the right on a narrow terminal. A figure the broker doesn't report shows—; with the broker's metrics collector off, every count and rate does, and the pane says why. The list loads on connect, refreshes every browse_refresh_ms while the Browser is showing, and r refreshes it now (and retries an API that failed). The cursor stays on its queue or exchange, and what the server deleted drops out. A vhost with more than 5,000 queues or exchanges shows the first 5,000 of each.
Tapping exchanges
Press t or Enter on an exchange to tap it. A topic,fanout or headers exchange is tapped with the binding key#, which takes every message it routes (a headers binding without arguments matches every message). A direct exchange only routes exact keys, so the Tail anchor opens with exchange:name/ typed for you to add one. Another exchange type is tapped with #, which it may not match. Internal exchanges can be tapped too.
A tap binds a temporary, exclusive, auto-deleting queue to the exchange and reads the copies routed to it, so your real queues lose nothing. It shows messages published after it starts, in a tab of its own in the bottom panel; x closes it. SeeRealtime tails.
A queue can't be tailed: reading it would consume its messages. Peek it, or tap an exchange that routes to it.
Peeking queues
Press Enter on a queue to peek it: Keyhole reads up to 200 messages from the head of the queue through the API's /get and lists them on the right. The count reads200+ when there may be more, so on a full queue the newest messages can lie beyond the window. Ctrl+→ moves into the list, / filters it, and the preview shows the selected message's body (up to value_preview_bytes, marked when cut) and its exchange, routing key, redelivered flag, properties and headers.
A peek runs only when you press Enter: never as the cursor moves, and never on a list refresh. Enter on the queue again steps into its messages; peeking another queue replaces them. A stream queue can't be peeked (RabbitMQ refuses basic.get on streams): tap an exchange that routes to it instead.
Peek modes
How a peek reads a queue is the peek_mode setting, shared with AMQP 1.0. Change it on the Settings page (:, then Settings page, theAMQP peek mode row) or in the config file:
[settings]
peek_mode = "browse" # or "skip" / "destructive"
browse_refresh_ms = 5000 # list refresh; 0 turns it off
value_preview_bytes = 65536 # body bytes a peek shows per message| browse | The default. RabbitMQ has no read-only peek, so each message is taken and put straight back (ack_requeue_true), in order. Back on the queue it's flaggedredelivered, the queue's get and redeliver stats move, and the messages are briefly unavailable to consumers while the peek runs. |
| destructive | Reads and removes the messages (ack_requeue_false). |
| skip | Doesn't read queues at all. The list and taps still work. |
On RabbitMQ 3.x, each browse peek of a quorum queue raises its messages'
x-delivery-count. With a delivery-limit (an argument or a policy), a
message peeked past the limit is dropped, or dead-lettered if the queue has a dead-letter
exchange; with a limit below 1, every peek drops or dead-letters what it reads. Keyhole warns
on those queues before and after a peek. RabbitMQ 4.x only raises
x-acquired-count on a peek, which never reaches the limit, so there's no warning.
Publishing
Press P on the selected queue or exchange to publish one message. It goes over AMQP with publisher confirms on, marked persistent, and carries only the body you type: no headers, content type or other properties.
- A queue is published to through the default exchange under its own name, so you only type the body.
- A direct or topic exchange first asks for the routing key, filled in with the last one you used on it this session; Enter moves on to the body, and an empty key is a valid one.
- A fanout or headers exchange skips the key. A headers exchange routes on headers, which the publish doesn't set, so only a binding without header arguments takes it.
- Internal exchanges refuse client publishes, so P isn't offered on them.
The footer reports the outcome, and the details pane keeps it: Published to … once the broker confirms; unroutable: … when no queue took the message (no such queue, or no binding for the key); NACKed when the broker wouldn't take it, such as a full queue that rejects publishes; and refused: … when the broker closed the channel, such as an ACCESS_REFUSED. The next publish opens a new channel. A publish doesn't peek the queue again, because a peek takes messages off it: press Enter to see the new message.
Stats, connections & consumers
The Server band at the top shows the connection's address and vhost, and its dot turns to a warning on a node alarm. The Server Details tab has the RabbitMQ and Erlang versions and cluster name, message, queue, connection and consumer totals, each node's health (alarms, uptime, memory, file descriptors, free disk), and Publish/s and Deliver/s graphs. The Connections tab lists each client by the name it gave, with its peer, user, channels, state, byte rates and age; Consumers lists queue, consumer tag, channel, ack mode, prefetch and whether it's active. A tab's list is fetched only while that tab is focused, and ↑ ↓ Home End scroll it.