# 创建RabbitMQ Exchange
Exchange用于接收、分配消息。生产者向分布式消息服务RabbitMQ版发送消息时，不会直接将消息发送到Queue，而是先将消息发送到Exchange中，Exchange根据路由键查找Queue，如果查找到，将消息存放到Queue中，如果未查找到，将消息丢弃。
本章节指导如何在控制台创建Exchange。
#### 约束与限制
- RabbitMQ 3.x.x版本在创建Vhost后会创建7个默认Exchange：(AMQP default)、amq.direct、amq.fanout、amq.headers、amq.match、amq.rabbitmq.trace、amq.topic。
- RabbitMQ AMQP-0-9-1版本在创建Vhost后会创建5个默认Exchange：amq.direct、amq.fanout、amq.headers、amq.match、amq.topic。
- RabbitMQ AMQP-0-9-1版本实例的Exchange名称包含特殊字符，例如"%"、"\|"、"/"、"."、"-"，会导致Exchange名称与监控页面不一致，在监控页面中特殊字符会以"_"显示。例如：Exchange名称为Exchange.1%1\|2-3/，此时监控中显示的Exchange名为"Exchange_1_1_2_3_"。
 
#### 前提条件
已[创建Vhost](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq_ug_0022.html)。
#### 创建RabbitMQ Exchange
1. 登录[RabbitMQ控制台](https://console.huaweicloud.com/dms/?engine=rabbitMQ&locale=zh-cn#/queue/manager/newRabbitMQList)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-rabbitmq/zh-cn_image_0143929918.png)，选择RabbitMQ实例所在的区域。
3. 单击实例名称，进入实例概览页面。
4. 在左侧导航栏选择"实例管理 \> Vhost列表"，进入Vhost列表页面。
5. 单击Vhost名称，进入Vhost详情页。
6. 在"Exchange"页签中，单击"创建Exchange"，弹出"创建Exchange"对话框。
7. 参考[表1]，设置Exchange名称和配置信息。
   
    表1Exchange参数说明 
   | 参数          | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 名称            | 系统为您自动生成了Exchange名称，您可以根据需要修改。 - 3.x.x版本的Exchange名称需要符合以下规则：只能由英文字母、数字、点、百分号、竖线、中划线、下划线、斜杠组成，长度为2\~128个字符，且名称不能为".."。  - AMQP-0-9-1版本的Exchange名称需要符合以下规则：只能由英文字母、数字、点、百分号、竖线、中划线、下划线、斜杠组成，长度2\~64字符（每个特殊字符按3个字符计算长度），且名称不能为".."。   创建Exchange后不能修改名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 绑定类型       | 选择路由类型。关于Exchange类型更详细的介绍，请参见[Exchange类型介绍](https://support.huaweicloud.com/productdesc-rabbitmq/rabbitmq_pd_0012.html)。 - **direct**：该类型Exchange会将消息路由到Routing Key完全匹配的Queue中。  - **fanout**：该类型Exchange会将消息路由到所有与其绑定的Queue中。  - **topic**：该类型Exchange将Routing Key进行通配符匹配，然后将消息路由到匹配成功的Queue中。  - **headers**：该类型Exchange与Routing Key无关，而与消息中的Headers属性信息相关。Exchange根据消息中的Headers属性键值对和绑定的属性键值对进行匹配，根据匹配情况路由消息。  - **x-delayed-message**：该类型Exchange的作用为延迟投递消息，根据Exchange类型的路由规则路由消息。  - **x-consistent-hash**：该类型Exchange会根据Routing Key计算出一个hash值，按照hash值将消息路由到对应的Queue中。   |
   | Exchange类型 | "类型"设置为"x-delayed-message"时，页面显示此参数。 x-delayed-message Exchange根据设定的Exchange类型的路由规则路由消息。 - **direct**：该类型Exchange会将消息路由到Routing Key完全匹配的Queue中。  - **fanout**：该类型Exchange会将消息路由到所有与其绑定的Queue中。  - **topic**：该类型Exchange将Routing Key进行通配符匹配，然后将消息路由到匹配成功的Queue中。  - **headers**：该类型Exchange与Routing Key无关，而与消息中的Headers属性信息相关。Exchange根据消息中的Headers属性键值对和绑定的属性键值对进行匹配，根据匹配情况路由消息。                                                                                                                                                                                                                                         |
   | 自动删除        | 是否开启自动删除Exchange。 - 开启：当最后一个绑定的Queue与Exchange解除绑定后，该Exchange会被自动删除。  - 不开启：当最后一个绑定的Queue与Exchange解除绑定后，不会删除该Exchange。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 持久化           | RabbitMQ 3.x.x版本需要设置此参数。RabbitMQ AMQP-0-9-1版本Exchange默认开启持久化。 是否开启Exchange持久化。 - 开启：该Exchange在服务器重启后仍然存在。  - 不开启：该Exchange在服务器重启后会被删除，需要重新创建。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | Internal   | 仅RabbitMQ 3.x.x版本包含此参数。 Exchange是否为RabbitMQ内部使用。 - 是：该Exchange不能用于生产消费消息。  - 否：该Exchange可以用于生产消费消息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      
   
   
8. 单击"确定"，完成Exchange的创建。 
   在"Exchange"页签中，查看新创建的Exchange。
   
   
 
#### 相关文档
如果您希望通过API创建Exchange，请参考[创建Exchange](https://support.huaweicloud.com/api-rabbitmq/CreateExchange.html)。
