Updated on 2025-07-14 GMT+08:00

Creating a RabbitMQ Exchange

Exchanges receive and assign messages. Producers send messages to exchanges first, rather than directly to queues. Exchanges route messages to one or more queues based on routing keys. If there are no matching queues, the messages are discarded.

This section describes how to create an exchange on the console.

Notes and Constraints

  • For RabbitMQ 3.x.x instances, seven exchanges are created by default after virtual host creation. These exchanges include (AMQP default), amq.direct, amq.fanout, amq.headers, amq.match, amq.rabbitmq.trace, and amq.topic.
  • When an exchange name of a RabbitMQ AMQP-0-9-1 instance contains special characters such as percent (%), vertical bar (|), slash (/), andperiod (.), this name is not consistently displayed on the monitoring page. The special characters are displayed as underscores (_). For example, exchange Exchange.1%1|2_3/ is displayed as Exchange_1_1_2_3_ in monitoring.

Prerequisite

A virtual host has been created.

Creating a RabbitMQ Exchange

  1. Log in to the RabbitMQ console.
  2. Click in the upper left corner to select the region where your instance is located.
  3. Click an instance name to go to the instance details page.
  4. In the navigation pane, choose Instance > Virtual Hosts.
  5. Click a virtual host name.
  6. On the Exchange tab page, click Create Exchange. The Create Exchange dialog box is displayed.
  7. Configure the exchange name and other parameters by referring to Table 1.

    Table 1 Exchange parameters

    Parameter

    Description

    Name

    When creating an exchange, you can modify the automatically generated exchange name. Naming rules: 3–128 characters and only letters, digits, periods (.), percent signs (%), vertical bars (|), hyphens (-), underscores (_), or slashes (/).

    The name cannot be changed once the exchange is created.

    Type

    Select a routing type. For details, see Exchanges.

    • direct: Exchanges route messages to matching queues based on the routing keys.
    • fanout: Exchanges route messages to all bound queues.
    • topic: Exchanges route messages to queues based on routing key wildcard matching.
    • headers: Exchanges are related to the message headers. Routing keys are not used. Exchanges route messages based on matching between key-value pairs in the message headers and the binding (a key-value pair).
    • x-delayed-message: Exchanges delay message delivery. Delayed messages will be routed by the exchange type-specified rules.
    • x-consistent-hash: Exchanges calculate a hash value based on a routing key, and route a message to the hashed queue.

    x-delayed-type

    This parameter is displayed only when Type is set to x-delayed-message.

    Messages are routed by x-delayed-type-specified rules.

    • direct: Exchanges route messages to matching queues based on the routing keys.
    • fanout: Exchanges route messages to all bound queues.
    • topic: Exchanges route messages to queues based on routing key wildcard matching.
    • headers: Exchanges are related to the message headers. Routing keys are not used. Exchanges route messages based on matching between key-value pairs in the message headers and the binding (a key-value pair).

    Auto-Delete

    Indicates whether to enable automatic exchange deletion.

    • Enabled: The exchange will be automatically deleted when the last bound queue unbound from the exchange.
    • Disabled: The exchange will not be deleted when the last bound queue unbound from the exchange.

    Persistence

    This parameter is mandatory for RabbitMQ 3.x.x instances, and enabled by default for RabbitMQ AMQP-0-9-1 ones.

    Indicates whether to enable exchange persistence.

    • Enabled: The exchange survives server restart.
    • Disabled: The exchange will be deleted after server restarts and needs to be recreated.

    Internal

    Only RabbitMQ 3.x.x instances have this parameter.

    Indicates whether exchanges are for internal use.

    • Yes: An exchange can only bind another exchange instead of a queue.
    • No: Exchanges can bind exchanges and queues.

  8. Click OK.

    View the created exchange on the Exchange tab page.

Related Document

To create an exchange by calling an API, see Creating an Exchange.