Message Routing

Message Routing

Message routing lets you move messages from one queue to another directly from the UI. The most common use case is rescuing messages from a dead-letter queue (DLQ) back to the original queue for reprocessing.

Routing a Message

  1. Open the queue containing the message(s) you want to route.
  2. Select one or more messages using the checkboxes.
  3. Click Route to queue.
  4. Choose or type the target queue name.
  5. Click Route.

The messages are re-published to the target queue and removed from the source queue.

Routing All Messages

To route the entire contents of a queue, select all visible messages with the checkbox in the table header, then proceed as above. If the queue has more messages than your current fetch limit, increase the fetch count first.

Dead-Letter Queue Rescue

When a message lands in a DLQ, RabbitMQ adds x-death headers containing information about why the message was rejected (rejection count, original exchange, original routing key, timestamps). If you re-publish such a message without removing these headers, the broker may immediately re-dead-letter it.

HZN Queue Console automatically strips x-death headers before re-publishing when routing from a DLQ. You do not need to do anything special — the cleanup happens transparently.

Routing match modes

You can control how strictly the target queue is validated:

  • Lenient (default) — accepts any target queue name, including queues that don’t exist yet (useful for routing to a staging queue)
  • Strict — only allows routing to queues that currently exist on the broker

Change the routing match mode per server in the server settings.

What Gets Preserved

When a message is routed, the following are preserved exactly as-is:

  • Payload (body)
  • Content type
  • All headers (except x-death when routing from a DLQ)
  • correlationId
  • messageId
  • routingKey (re-used as the new routing key)

Publishing New Messages

Use Publish message (via the toolbar or right-click on a queue) to publish a new message directly to a queue. You can set the payload, content type, headers, and properties manually.