BROKABROKA
Sign inDownload CommunityRequest a demo
RabbitMQFully supported

A message did not vanish. A binding did not match.

Clusters, virtual hosts, exchanges, queues and the bindings between them — with routing made visible, queue depth read as ready against unacknowledged, and dead-letter flows followed one hop at a time.

Scope
Clusters and vhosts
Depth
Routing and bindings
Safety
Environment policy
RabbitMQ station — exchange routingOne operational surface
One exchange, bindings fanning out to queues, and depth accumulating in whichever queue its consumers cannot keep up with.
01What a RabbitMQ operator gets

Every RabbitMQ concept, kept distinct.

01

Clusters and virtual hosts

Nodes, their state and the vhosts on them, the broker’s own health checks — alarms, certificates close to expiry, quorum queues one failure from losing their majority — and the deprecated features the cluster still uses. A vhost can be protected from deletion, or started again on a node where it stopped. A vhost boundary is usually the cleanest mapping onto an environment.

nodes · vhosts · health checks · policies
02

Exchanges

Direct, topic, fanout and headers exchanges with their durability, arguments and every binding leaving them.

type · durable · auto-delete · arguments
03

Queues and depth

Ready, unacknowledged and total counts, plus consumer count and the arguments that decide TTL, length limits and overflow behaviour.

ready · unacked · consumers · arguments
04

Bindings and routing keys

Every binding leaving an exchange — exchange-to-exchange hops included — with the key each one matches. The relationship is the thing, so it is drawn rather than listed.

binding key · routing key · headers match
05

Connections and channels

Client connections, the channels multiplexed over them, prefetch settings and the consumers attached to each queue — and every connection of one user closed at once, with a reason the broker passes to its clients.

connections · channels · prefetch · consumers
06

Dead-letter flows

Where a rejected or expired message goes next, followed one hop at a time rather than assumed from a naming convention — and kept apart from the unroutable case, which is the alternate exchange’s job.

dlx · alternate exchange · reject · expire
07

Quorum queues and streams

Per-replica Raft state with commit and log indices, delivery limits, and streams read by offset, timestamp or interval — a read that takes nothing away.

raft members · delivery limit · offset reads · retention
08

Policies, applied honestly

User policies ordered by priority — only the highest match applies — with operator policies shown as the separate layer they are.

priority · pattern · operator policies
09

Message operations

Publish to an exchange with publisher confirms and see what the broker did with it — confirmed, returned because nothing routed it, or refused. Getting a message off a queue is an operation on the queue, and the console says so.

publish · confirmed / returned / nacked · get
02Routing

Follow the message, not the queue name.

Publishing goes to an exchange, never to a queue. Which queue receives it is decided by the bindings and the routing key — so the console draws the topology that makes that decision instead of leaving you to infer it from four screens and a naming convention.

VHOST · /paymentspublishercheckout-apirouting keypay.us.settledx.paymentstopic · durablepay.eu.#no matchpay.us.#matchedpay.*.failedno matchq.pay.euq.pay.usq.pay.dlqready 412 · unacked 6 · 6 consumersready 18,904 · unacked 41 · 2 consumersready 27 · unacked 0 · no consumerconsumersettlement-worker ×2reject / expirex.payments.dlx → q.pay.dlqq.pay.us is deep because two consumers are serving it, not because routing is wrong — the binding matched exactly as configured.
03Bindings and queue depth

Two numbers, two different problems.

Ready messages are waiting for a consumer; unacknowledged ones are already with a consumer that has not confirmed them. A queue that is deep in ready needs throughput; a queue that is deep in unacknowledged needs to know why a consumer stopped answering. Quorum queues add a third reading: redeliveries approaching the delivery limit, and a minority state the console flags red.

Binding matrix · x.payments
Binding keyQueuepay.us.settled
pay.eu.#q.pay.euno match
pay.us.#q.pay.usmatched
pay.*.failedq.pay.dlqno match
#q.pay.auditmatched

A topic exchange delivers to every matching binding, not the first one. The catch-all binding is why an audit queue is also filling — which is easy to forget and hard to see anywhere else.

Purge is a guarded operation

Purging discards ready messages irrecoverably. It requires operate rights on the environment, names the queue and the count in the confirmation, and is refused outright where the environment is marked read-only.

READYUNACKEDq.pay.eu6 consumers keeping paceq.pay.usready deep · needs throughputq.ledgerunacked deep · a consumer stopped answeringsame total depth, opposite investigations
One alarm blocks every publisher

A memory or disk alarm on a single node blocks publishers across the whole cluster — the reason nothing is publishing while no queue looks full. The console names the node and the alarm, and keeps flow, blocking and blocked apart, because they are three different states.

04Inside the console
rabbitmq / rabbitmq-test / broka.dev / routing
BROKA routing screen for the broka.dev vhost with Publish through set to the orders topic exchange: four bindings across five objects — curves labelled order.#, order.created and order.# run to the queues orders.audit and orders.processing and to the fanout exchange orders.audit.fanout, whose unlabelled arrow carries on to orders.audit.archive a column further right — above the note on how to read the graph.BROKA routing screen for the broka.dev vhost with Publish through set to the orders topic exchange: four bindings across five objects — curves labelled order.#, order.created and order.# run to the queues orders.audit and orders.processing and to the fanout exchange orders.audit.fanout, whose unlabelled arrow carries on to orders.audit.archive a column further right — above the note on how to read the graph.
Routing graph. Every binding in the vhost drawn as the graph a message travels — exchange-to-exchange hops included — with the key each arrow has to match.
rabbitmq / broka.dev / orders.audit
BROKA queue detail for orders.audit: stat cards reading 101K ready, 20 unacknowledged, one consumer and 14.8 MB, above the Messages tab warning that reading this queue is not a peek, set to read ten messages and requeue them.BROKA queue detail for orders.audit: stat cards reading 101K ready, 20 unacknowledged, one consumer and 14.8 MB, above the Messages tab warning that reading this queue is not a peek, set to read ten messages and requeue them.
Queue detail. Ready against unacknowledged, consumers and size — and a read that says what it does before it does it: requeued at the head and marked redelivered, not a peek.
Request a demo
05Access and safety

Permissions live on the vhost. So do the mistakes.

RabbitMQ grants configure, write and read per vhost with regular expressions, which is powerful and easy to get subtly wrong. BROKA's scoped role is checked first, and the connection's own vhost permissions still apply underneath — neither layer is bypassed.

  • 01Map one vhost to one environment wherever the estate allows it
  • 02Purge and delete require operate rights and name the queue and count
  • 03Publishing from the console is refused in a read-only environment, not queued
  • 04Policy edits are administrative: who changed which policy, and what it now sets
  • 05Closing a client connection is deliberate: operate rights, a stated reason, and an audit entry
  • 06In Commercial, the fields a data masking rule covers are masked in every message the console reads, and every unmasked read is recorded
  • 07Connects with a password or OAuth 2.0 client credentials, over TLS verified against your own CA and with a client certificate where the broker asks for one — and an environment that forbids insecure TLS holds here too
Audit entry
actor      mert@northwind-bank.example
session    9f2c4a            ip: 10.20.8.41
env        production        policy: read-only
broker     rabbitmq          cluster: rmq-core-01
resource   queue q.pay.us    vhost: /payments
action     purge
outcome    rejected — blocked by environment policy

A rejected action is recorded exactly like an accepted one. A trail that only holds successes cannot answer the question an access review is actually asking.

Audit and accountability →
Get the Security overview

RabbitMQ documentation and guides

All pages →
DocsExchangesExchange types as your broker registers them, and where messages go when nothing matches.DocsQueues and their typesClassic, quorum and stream — TTL, length limits, overflow, and which type carries replication.DocsBindings and routingHow a key is matched, and where a message goes when none matches.DocsDead-letter flowsWhat sends a message to a dead-letter exchange, and where it lands.
Get started

See every binding a message could take.

Community covers Kafka and Kafka-compatible brokers — RabbitMQ ships in Commercial. Connect a cluster, open a vhost, and follow the bindings out of an exchange to the queues on the other end.

Contact salesRequest a demoCommercial — join the waitlistCompare broker capabilities →