
# 快速连接RabbitMQ并生产消费消息
本文将为您介绍分布式消息服务RabbitMQ版入门的使用流程，以创建一个未开启SSL的RabbitMQ实例，客户端使用内网通过同一个VPC连接RabbitMQ实例生产消费消息为例，帮助您快速上手RabbitMQ。
图1RabbitMQ使用流程   
![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000001971461465.png)
1. [准备工作]
   RabbitMQ实例运行于虚拟私有云（Virtual Private Cloud，以下简称VPC）中，在创建实例前需要确保有可用的虚拟私有云。
   
2. [创建RabbitMQ实例]
   在创建实例时，您可以根据需求选择需要的实例规格和数量。
   
3. [连接实例]
   客户端以RabbitMQ提供的demo，连接未开启SSL的实例。
   
 #### 步骤一：准备工作
1. 注册华为账号并实名认证。 
   在创建RabbitMQ实例前，请先注册华为账号并实名认证，具体步骤请参考[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)和[实名认证介绍](https://support.huaweicloud.com/usermanual-account/account_auth_00001.html)。
   如果您已有一个华为账号并实名认证，请跳过此步骤。
   
   
2. 为账户充值。 
   在创建RabbitMQ实例前，确保账户有足够金额。账户充值的具体步骤，请参考[账户充值](https://support.huaweicloud.com/usermanual-billing/bills-topic_30000002.html)。
   
   
3. 为用户添加RabbitMQ实例的操作权限。 
   如果您需要对云上的资源进行精细管理，请使用统一身份认证服务（Identity and Access Management，简称IAM）创建IAM用户及用户组，并授权，以使得IAM用户获得RabbitMQ实例的操作权限。具体操作请参考[创建用户并授权使用DMS for RabbitMQ](https://support.huaweicloud.com/usermanual-rabbitmq/CreateUserAndGrantPolicy.html)。
   
   
4. 创建VPC和子网。
   
   在创建RabbitMQ实例前，确保已存在可用的VPC和子网。创建VPC和子网的具体步骤，请参考[创建虚拟私有云和子网](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
   **创建的VPC与RabbitMQ实例必须在相同的区域。**
   
   
5. 创建安全组并添加安全组规则。
   
   在创建RabbitMQ实例前，确保已存在可用的安全组。创建安全组的具体步骤，请参考[创建安全组](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013748715.html)。
   **创建的安全组与RabbitMQ实例必须在相同的区域。**
   连接RabbitMQ实例前，请添加[表1]所示安全组规则，其他规则请根据实际需要添加。
    表1安全组规则 
   | 方向  | 协议  | 端口   | 源地址       | 说明                     |
   |:---|:---|:---|:---|:---|
   | 入方向 | TCP | 5672 | 0.0.0.0/0 | 访问RabbitMQ实例（关闭SSL加密）。 |
      
   ![](https://support.huaweicloud.com/qs-rabbitmq/public_sys-resources/note_3.0-zh-cn.png)
   安全组创建后，系统默认添加入方向"允许安全组内的弹性云服务器彼此通信"规则和出方向"放通全部流量"规则。此时使用内网通过同一个VPC访问RabbitMQ实例，无需添加[表1]的规则。
   
   
6. 构建生产消费客户端。 
   本文以Linux系统的弹性云服务器（Elastic Cloud Server，简称ECS）作为生产消费客户端。在创建RabbitMQ实例前，请先创建开启弹性公网IP的ECS、安装JDK以及配置环境变量。
   1. [购买ECS](https://console.huaweicloud.com/ecm/?locale=zh-cn#/ecs/create/custom)。
      创建ECS的具体步骤，请参考[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。如果您已有可用的ECS，可重复使用，不需要再次购买。
      
   
   2. 使用root用户登录ECS。
   
   3. 安装Java JDK，并配置JAVA_HOME与PATH环境变量。
      1. 下载Java JDK。
         ![](https://support.huaweicloud.com/qs-rabbitmq/public_sys-resources/note_3.0-zh-cn.png)
         ECS默认自带的JDK可能不符合要求，例如OpenJDK，需要配置为Oracle的JDK，可至Oracle官方下载页面[下载Java Development Kit 1.8.111及以上版本](https://www.oracle.com/java/technologies/downloads/#java8)。
         
      
      2. 解压Java JDK。
         ```
         tar -zxvf jdk-8u321-linux-x64.tar.gz
         ```
         "jdk-8u321-linux-x64.tar.gz"为JDK的版本，请根据实际情况修改。
         
      
      3. 打开".bash_profile"文件。
         ```
         vim ~/.bash_profile
         ```
         
      
      4. 添加如下内容。
         ```
         export JAVA_HOME=/opt/java/jdk1.8.0_321 
         export PATH=$JAVA_HOME/bin:$PATH
         ```
         "/opt/java/jdk1.8.0_321"为JDK的安装路径，请根据实际情况修改。
         
      
      5. 按"Esc"，然后输入以下命令，按"Enter"，保存并退出".bash_profile"文件。
         ```
         :wq
         ```
         
      
      6. 执行如下命令使修改生效。
         ```
         source .bash_profile
         ```
         
      
      7. 查看Java JDK是否安装成功。
         ```
         java -version
         ```
         回显信息中包含如下信息，表示Java JDK安装成功。
         ```
         java version "1.8.0_321"
         ```
         
       
    
   
   
 
 #### 步骤二：创建RabbitMQ实例
1. 进入[购买RabbitMQ实例页面](https://console.huaweicloud.com/dms/?engine=rabbitMQ&locale=zh-cn#/queue/newCreateRabbitMQV2)。
2. 在"快速购买"页签，设置实例基础配置，如[图2]所示，配置详情请参考[表2]。
   
    表2设置实例基础配置 
   | 参数   | 说明                                                                                              |
   |:---|:---|
   | 计费模式 | 选择"按需计费"，即先使用再付费，按照RabbitMQ实例实际使用时长计费，秒级计费，按小时结算。                                               |
   | 区域   | 不同区域的云服务产品之间内网互不相通。请就近选择靠近您业务的区域，可减少网络时延，提高访问速度。 选择"华北-北京四"。 |
   | 可用区  | 可用区指在同一区域下，电力、网络隔离的物理区域，可用区之间内网互通，不同可用区之间物理隔离。 选择"可用区1"。        |
      
   图2设置实例基础配置   
   ![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000002089486962.png "点击放大")
   
   
3. 设置实例规格和存储空间，如[图3]所示，配置详情请参考[表3]。
   
    表3设置实例规格和存储空间 
   | 参数       | 说明                                                                                                                                   |
   |:---|:---|
   | 套餐规格     | 选择"测试规格"，该规格提供最小规格的单机实例，为您节约资源和使用成本，但由于仅为单机部署，无法支持高可用能力，适用测试或者调试业务。                                                                  |
   | 磁盘类型     | 根据实际需要选择存储RabbitMQ数据的磁盘类型。 RabbitMQ实例创建后，磁盘类型不支持修改。 选择"超高I/O"。       |
   | 单个代理磁盘容量 | 根据实际需要选择存储RabbitMQ数据的磁盘大小。 实例总存储空间 = 单个代理的存储空间 \* 代理数量 选择"100GB"。 |
      
   图3设置实例规格和存储空间   
   ![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000002476166273.png "点击放大")
   
   
4. 设置实例网络环境信息，如[图4]所示，配置详情请参考[表4]。
   
    表4设置实例网络环境信息 
   | 参数    | 说明                                                                                                                    |
   |:---|:---|
   | 虚拟私有云 | 虚拟私有云在RabbitMQ实例创建完成后，不支持修改。 选择[准备工作]中设置好的虚拟私有云。 |
   | 子网    | 子网在RabbitMQ实例创建完成后，不支持修改。 选择[准备工作]中设置好的子网。          |
   | 安全组   | 选择[准备工作]中设置好的安全组。                                                                 |
      
   图4设置实例网络环境信息   
   ![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000002442739418.png "点击放大")
   
   
5. 设置实例的访问方式，公网访问保持默认，关闭加密方式。
6. 设置实例的认证方式，如[图5]所示，配置详情请参考[表5]。
   
    表5设置实例的认证方式 
   | 参数              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | RabbitMQ认证方式用户名 | 设置连接RabbitMQ实例的用户名。 用户名需要符合以下命名规则：由英文字母开头，且只能由英文字母、数字、中划线、下划线组成，长度为4\~64个字符。 输入"test"。                                                                                                                                                                                                                                                                                                                             |
   | 密码              | 设置连接RabbitMQ实例的密码。 密码需要符合以下命名规则： - 长度为8\~32个字符。  - 至少包含以下字符中的3种：大写字母、小写字母、数字、特殊字符\`\~!@#$%\^\&\*()-_=+\\\|\[{}\];:'",\<.\>?和空格，并且不能以-开头。  - 不能与用户名或倒序的用户名相同。   |
      
   图5设置实例的认证方式   
   ![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000002476236653.png "点击放大")
   
   
7. 设置实例高级配置，如[图6]所示，配置详情请参考[表6]，其他参数保持默认设置。
   
    表6设置实例高级配置 
   | 参数   | 说明                                                                                                                 |
   |:---|:---|
   | 实例名称 | 实例名称支持自定义，但需要符合命名规则：长度为4\~64个字符，由英文字母开头，只能由英文字母、数字、中划线、下划线组成。 输入"rabbitmq-test"。 |
   | 企业项目 | 该参数针对企业用户使用。企业项目是对企业不同项目间资源的分组和管理，属于逻辑隔离。 选择"default"。                           |
      
   图6设置实例高级配置   
   ![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000002125364961.png "点击放大")
   
   
8. 单击"确认订单"，进入规格确认页面。
9. 确认实例信息无误且阅读并同意《华为云用户协议》后，提交请求。
10. 在实例列表页面查看实例是否创建成功。 
    创建实例大约需要3到15分钟，此时实例的"状态"为"创建中"。
    - 当实例的"状态"变为"运行中"时，说明实例创建成功。
    
    - 当实例的"状态"变为"创建失败"，请删除创建失败的RabbitMQ实例，然后重新购买。如果重新购买仍然失败，请联系客服。
     
    
    
11. 实例创建成功后，单击实例名称，进入实例详情页。
12. 在"连接信息"区域，查看并记录连接地址。
    
    图7连接地址   
    ![](https://support.huaweicloud.com/qs-rabbitmq/zh-cn_image_0000002125462133.png)
    
    
 
 #### 步骤三：连接实例生产消费消息
1. 进入ECS的"root"目录下，下载[RabbitMQ-Tutorial.zip](https://dms-demo.obs.cn-north-1.myhuaweicloud.com/RabbitMQ-Tutorial.zip)示例工程代码。
   
   ```
   wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/RabbitMQ-Tutorial.zip
   ```
   ![](https://support.huaweicloud.com/qs-rabbitmq/public_sys-resources/note_3.0-zh-cn.png)
   "/root"为示例工程代码存放路径，请根据实际情况修改。
   
   
2. 解压RabbitMQ-Tutorial.zip压缩包。 
   ```
   unzip RabbitMQ-Tutorial.zip
   ```
   
   
3. 进入RabbitMQ-Tutorial目录，该目录下包含预编译好的jar文件。 
   ```
   cd RabbitMQ-Tutorial
   ```
   
   
4. 运行生产消息示例。 
   ```
   java -cp .:rabbitmq-tutorial.jar Send ${host} ${port} ${user} ${password}
   ```
   参数说明如下：
   - host：从[创建实例]中获取的连接地址。
   
   - port：RabbitMQ实例的连接端口，输入5672。
   
   - user：[创建实例]时，设置的用户名。
   
   - password：[创建实例]时，设置的密码。
   
   
   生产消息示例如下：
   ```
   [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.xx.40 5672 test Zxxxxxxs
    [x] Sent 'Hello World!'
   [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Send 192.168.xx.40 5672 test Zxxxxxxs
    [x] Sent 'Hello World!'
   ```
   
   
5. 运行消费消息示例。 
   ```
   java -cp .:rabbitmq-tutorial.jar Recv ${host} ${port} ${user} ${password}
   ```
   参数说明如下：
   - host：从[创建实例]中获取的连接地址。
   
   - port：RabbitMQ实例的连接端口，输入5672。
   
   - user：[创建实例]时，设置的用户名。
   
   - password：[创建实例]时，设置的密码。
   
   
   消费消息示例如下：
   ```
   [root@ecs-test RabbitMQ-Tutorial]# java -cp .:rabbitmq-tutorial.jar Recv 192.168.xx.40 5672 test Zxxxxxxs
    [*] Waiting for messages. To exit press CTRL+C
    [x] Received 'Hello World!'
    [x] Received 'Hello World!'
   ```
   如需停止消费使用**Ctrl+C**命令退出。
   
   
 
#### 相关信息
- 了解RabbitMQ实例的相关概念，请参考[RabbitMQ基本概念](https://support.huaweicloud.com/productdesc-rabbitmq/rabbitmq-pd-190828008.html)。
- 了解RabbitMQ实例的价格，请参考[分布式消息服务RabbitMQ版价格详情](https://www.huaweicloud.com/pricing/calculator.html#/rabbitMQ)。
- 登录RabbitMQ Web UI，请参考[连接RabbitMQ管理地址](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-180801003.html)。
- 查看RabbitMQ实例的监控指标，请参考[查看RabbitMQ监控数据](https://support.huaweicloud.com/usermanual-rabbitmq/rabbitmq-ug-190605002.html)。
 
