RabbitMQ routes published messages from exchanges to queues through bindings. Routing is declarative; business transformations normally belong in producers, consumers, or dedicated services, not hidden inside exchange topology.

Choose exchange semantics

ExchangeRouting rule
DirectBinding key equals routing key
TopicDot-separated routing key matches binding patterns using * and #
FanoutRoutes to all bound queues and ignores routing key
HeadersMatches declared header arguments

Exchange-to-exchange bindings can compose routing, but every hop increases operational complexity and does not create transactionality across consumers.

Design failure behavior

  • Declare durable exchanges/queues and persistent messages only where required; durability still needs tested recovery.
  • Use publisher confirms for broker acceptance and consumer acknowledgements after successful processing.
  • Use dead-letter exchanges with explicit retry limits and backoff. Avoid immediate requeue loops.
  • Make consumers idempotent because redelivery is normal; preserve correlation and causation identifiers.
  • Set message TTL, queue length, overflow, and unroutable-message handling deliberately.

Test topology as a contract

Version exchange, queue, binding, routing-key, schema, retry, and ownership definitions. Test expected and unexpected keys, duplicate/redelivered messages, consumer failure, node loss, network interruption, queue overflow, poison messages, and topology changes.

Review exchanges and replay, messaging fundamentals, and the local RabbitMQ environment.

Secure and observe

Use TLS, strong authentication, least-privilege virtual-host permissions, protected credentials, network restrictions, connection/channel limits, and audit appropriate to risk. Monitor publishes, confirms, deliveries, acknowledgements, redeliveries, unroutable/dead-lettered messages, queue depth/age, consumers, memory/disk alarms, and node health.

Reviewed against current RabbitMQ documentation September 4, 2026. Original publication date preserved.